【发布时间】:2018-01-26 10:55:12
【问题描述】:
我是 Java 新手。这是一个关于 for 循环中的 if 块的问题。此代码来自算法实践。 代码是取一个 int 数组,但将其视为一个整数,并在该整数上加一,并将新整数转换回数组格式。如果我没有描述清楚,请参考原文here。
public static int[] plusOne(int[] digits) {
int size = digits.length;
for(int i=size-1; i>=0; i--) {
if(digits[i] < 9) {
System.out.println("tag1 digits.i = " + digits[i]);
digits[i]++;
System.out.println("tag2 digits.i = " + digits[i]);
return digits; // <-- return
}
System.out.println("tag3 digits.i= " + digits[i]);
digits[i] = 0; //?
System.out.println("tag4 digits.i= " + digits[i]);
}
int[] intOut = new int [size+1];
intOut[0] = 1;
return intOut;
}
在上面的代码中,我添加了一些 println() 来显示digit[i] 的变化。
当输入为{1,2,3}时,为什么digits[i] = 0这行不起作用?阅读代码我以为int[] digits中的所有int都会设置为0。
如果在 if 块中是return,是否意味着停止当前迭代并忽略 if 块之后的 for 循环中的其余代码?
更新我没有清楚地描述它。我的问题不是关于用代码完成什么以及如何完成,而是关于给定我提到的输入,为什么 if 语句之后的代码不起作用.现在我了解到 if 块最后一行的 return 语句意味着执行它(停止当前迭代)。对不起这个愚蠢的问题..!
【问题讨论】:
-
看来你需要学习使用调试器了。请帮助自己一些complementary debugging techniques。如果您之后仍有问题,请随时回来提出更具体的问题。
-
你永远不会到达
digits[i] = 0;,因为如果digits[i] < 9,你就会返回。 -
你的digits数组没有大于9的值,试试数组{1,2,3,4,5,6,7,8,9,11,12,13,14}
-
@DevelopingDeveloper 不会有所作为;它返回第一个元素。
-
如果在 if 块中返回,是否意味着停止当前迭代并忽略 if 块后 for 循环中的其余代码? 是的,
return退出方法。你认为它有什么作用?
标签: java for-loop if-statement return