Java 修改数组';动态命名
我正在编写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,
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