为什么Java for循环的工作方式不同?[duplicate]

5fjcxozz  于 2023-03-11  发布在  Java
关注(0)|答案(1)|浏览(150)

此问题在此处已有答案

(29个答案)
昨天关闭。

public static int[] plusOne(int[] digits) {
   long n = 0;
   for(int i = 0; i < digits.length; i++) {
     n = n*10+digits[i];
   }
   System.out.println(n);
   n = 0; 
   for(int i : digits) {
     n = n*10+digits[i];
   }
   System.out.println(n);
   return digits;
}

上面的代码根据我使用的循环打印了完全不同的n值,第一个输出“9876543210”,第二个输出“123456789”,我的输入数组是“{9,8,7,6,5,4,3,2,1,0}”。我正在将int[]数组更改为单个值,并且预期输出是经典for循环“9876543210”的结果。我的理解是,这些循环的工作方式基本相同。

qvtsj1bj

qvtsj1bj1#

此行将为您计算索引:

for(int i = 0; i < digits.length; i++)

你必须通过查找来得到真实的的数字:

int digit = digits[i];
n = n*10+digit;

虽然这个表达式会直接给予你感兴趣的数字:

for(int digit : digits) {

因此您不必查找而是直接使用它:

n = n*10+digit;

相关问题