【问题标题】:Java Array Name From String来自字符串的 Java 数组名称
【发布时间】:2014-11-15 16:45:36
【问题描述】:

下面的代码有一个 run 方法,它接受一个 columnNumber。 我有 3 个不同的数组:col1、col2 和 col3 在顶部初始化,每个数组有 4 个元素。

假设在 run 方法中,我传入一个 int 值 2。所以,我希望 "s[0] = 500" 为 "col2[0] = 500"。

那么,有没有办法通过传入一个整数值来指定我想要的 int 数组?

例如,我输入 3,然后“s[0] = 500”将变为“col3[0] = 500”

public class Array {

static int[] col1 = {1, 2, 3, 4};  
static int[] col2 = {1, 2, 3, 4};
static int[] col3 = {1, 2, 3, 4};


public static void run(int columnNumber) {



    String string = Integer.toString(columnNumber);

    String s = "col" + string;

    s[0] = 500;

【问题讨论】:

  • run() 方法应该将 int[] 数组作为参数,而不是列号。因此,您可以将您希望该方法修改的数组传递给它。

标签: java arrays


【解决方案1】:

您不能(轻松)动态地引用变量名。你可能想要的是一个数组数组:

static int[][] cols = {
    {1, 2, 3, 4},
    {1, 2, 3, 4},
    {1, 2, 3, 4}
};

public static void run(int columnNumber) {
    cols[columnNumber - 1][0] = 500;
}

我使用了columnNumber - 1,因为数组索引是从 0 开始的。因此,如果您调用run(1),它将修改cols (cols[0]) 中的第一个数组。

【讨论】:

    【解决方案2】:

    我建议你可以使用 switch 语句。

    switch(columnNumber){
          case 1:
              col1[0]=500;
              break;
          case 2:
              col2[0]=500 ;
              break;
          case 3:
              col3[0]=500; 
              break;  
    }
    

    【讨论】:

      【解决方案3】:

      这个怎么样?

      static int[][] columns = { 
                              { 1, 2, 3, 4 },
                              { 1, 2, 3, 4 },
                              { 1, 2, 3, 4 }, 
                              { 1, 2, 3, 4 } 
                              };
      
      public static void run(int columnNumber) {
      
          columns[columnNumber][0] = 500;
      
      }
      

      【讨论】:

        猜你喜欢
        • 2010-09-23
        • 1970-01-01
        • 1970-01-01
        • 2019-07-04
        • 2014-10-27
        • 2016-04-13
        • 2019-05-19
        • 1970-01-01
        • 2020-03-06
        相关资源
        最近更新 更多