private static String getArgValue(String[] argsString, int[] jIndex, String classTag) {
String thisToken;
for( ; jIndex[0]<argsString.length ; jIndex[0]++) {
System.out.println("jIndex[0]: " + jIndex[0]);
if (condition) {
// yadda yadda yadda
jIndex[0]++;
System.out.println("jIndex[0]: " + jIndex[0]);
return retString;
}
}
return retString;
}
我尝试使用Integer
和数组来包装它,但都没有对原始i
变量进行更改。怎么称呼:
int[] j = new int[1];
for(int i=2; i< argsString.length; i++) {
// yadda yadda yadda
System.out.println("opening i: " + i);
j[0] = i;
thisArgValueString = getArgValue(argsString, j, thisArgClassString);
System.out.println("closing i: " + i);
}
示例输出:
opening i: 2
jIndex[0]: 2
jIndex[0]: 3
jIndex[0]: 5
closing i: 2
最佳答案
尝试打印你的 int 持有者而不是 i 本身:
System.out.println("closing i: " + j[0]);
或者您可以简单地重新分配 i:
i = j[0];
System.out.println("closing i: " + i);
您的原始变量i
不会自行改变,因为它是原始类型。整数也没有用,因为它是不可变的。所以您提供的代码本质上是正确的方法。你只需要明白,j[0] = i
仅分配 i
的值至j[0]
并且不链接 j[0]
的内容至i
。所以你可以使用j[0]
从那时起(就像本文中的第一个代码)或重新分配 i
从 j[0]
返回(就像本文中的第二个代码一样)。
关于java - 为什么我的wrapped int没有保留这个方法所做的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880015/