Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 修改数组';动态命名_Java_Arrays - Fatal编程技术网

Java 修改数组';动态命名

Java 修改数组';动态命名,java,arrays,Java,Arrays,我正在编写Java应用程序 这是我的代码示例: int [] digitPart_1 ={16,7,9,8,5,6,}; int [] digitPart_2 ={1,77,98,86,5,6,}; int [] digitPart_3 ={166,7,49,84,55,6,}; for(int i = 0; i < mfl.size(); i++){ new DataProcessing(digitPart_+""+(i + 1)); } int[]digitPart_1={16,

我正在编写Java应用程序

这是我的代码示例:

int [] digitPart_1 ={16,7,9,8,5,6,};
int [] digitPart_2 ={1,77,98,86,5,6,};
int [] digitPart_3 ={166,7,49,84,55,6,};

for(int i = 0; i < mfl.size(); i++){
 new DataProcessing(digitPart_+""+(i + 1));
}
int[]digitPart_1={16,7,9,8,5,6,};
int[]数字部分2={1,77,98,86,5,6,};
int[]数字部分3={166,7,49,84,55,6,};
对于(int i=0;i
在我现在的设计中,每个部分(例如digitPart_1)都应该传入,因为0+1=1,1+1=2,即digitPart_1等,但这会导致编译错误。它不允许我修改传入的数组的名称。 “mfl”不重要,它应存储编号3。我只是想知道是否可以动态修改传入的数据结构的名称,就像您可以修改传入输出流的字符串一样

有没有关于如何克服这个问题的建议?
干杯

使用二维数组,因为这正是你想要做的。编译语言根本不是这样工作的,尽管您可以查找Java反射(虽然Java反射与此相关,但它不是合适的设计工具)。

您不能动态修改变量的名称。但您可以改用数组:

int[][] digitPart = {{16,7,9,8,5,6}, {1,77,98,86,5,6}, {166,7,49,84,55,6}};

for(int i = 0; i < mfl.size(); i++){
   new DataProcessing(digitPart[i]);
}
int[]digitPart={{16,7,9,8,5,6},{1,77,98,86,5,6},{166,7,49,84,55,6};
对于(int i=0;i
您所做的在java中是非法的。在编译时必须知道变量名

您可以改为创建一个
映射
,其中键是变量的名称(
digitPart\u 1
…),条目是数组(
{16,7,…}…


在循环中,您可以通过
Map

访问数组。在Java中,您不能有动态变量名

相反,使用地图怎么样

Map<Integer, int[]> myMap = new HashMap<Integer, int[]>();

myMap.put(1 , {16,7,9,8,5,6,} );
myMap.put(2 , {16,7,9,8,5,6,7} );
...

and then 

for ( Integer i : myMap.keySet() ) 
    new DataProcessing(myMap.get(i));
Map myMap=newhashmap();
myMap.put(1,{16,7,9,8,5,6,});
myMap.put(2,{16,7,9,8,5,6,7});
...
然后
对于(整数i:myMap.keySet())
新数据处理(myMap.get(i));

只有在使用字段而不是方法局部变量时,才能执行此操作

int[] digitPart_1 = { 16, 7, 9, 8, 5, 6, };
int[] digitPart_2 = { 1, 77, 98, 86, 5, 6, };
int[] digitPart_3 = { 166, 7, 49, 84, 55, 6, };

public void foo() {
    for (int i = 1; i <= 3; i++) {
        try {
            System.out.println(getClass()
                    .getDeclaredField("digitPart_" + i));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
int[]digitPart_1={16,7,9,8,5,6,};
int[]数字部分2={1,77,98,86,5,6,};
int[]数字部分3={166,7,49,84,55,6,};
公共图书馆{

对于(int i=1;我可以重新解释一下你到底想做什么?例如,什么是mfl?如果你的键是序列整数,为什么要映射?数组更有效点@gefei..map只是一个建议。数组数组有时会导致混淆。
int[][] digitPart = { { 16, 7, 9, 8, 5, 6, }, { 1, 77, 98, 86, 5, 6, }, { 166, 7, 49, 84, 55, 6, } };
for (int i = 0; i < 3; i++) {
    System.out.println(digitPart[i]);
}
Map<String, List<Integer>> digitPart = new HashMap<String, List<Integer>>();
digitPart.put("digitPart_1", Arrays.asList( 16, 7, 9, 8, 5, 6));
digitPart.put("digitPart_2", Arrays.asList( 1, 77, 98, 86, 5, 6));
digitPart.put("digitPart_3", Arrays.asList(166, 7, 49, 84, 55, 6));

digitPart.get("digitPart_2").get(2); // 98