- 请用基本术语解释,只使用for循环 * 这更多的是一个数学问题,而不是一个编码问题,我知道有一个简单的if语句很容易解决这个问题,但我很好奇它如何只使用for循环。
问题在于编写一个名为printNumberSlide的方法,该方法由一个嵌套循环(一个内部循环和一个外部循环)组成。
内部循环应该打印21次每次打印0到9之间的数字。
数字应按顺序打印,然后从9之后的0重新开始。
当内部循环结束时,在下一行,它应该从上一行停止的地方开始打印。
另外,我认为外部循环根据行数控制每行。
这是我的可编译但根本不能工作的代码。
我会喜欢任何和所有的解释,也请让我知道,如果你需要更多的信息。
public class NumberSlide {
public static void main(String[] args) {
printNumberSlide(11);
}
private static void printNumberSlide(int row) {
for (int line = 0; line < row; line++) {
for (int num = line % 10; num <= num % 10; num++) {
System.out.print(num);
}
System.out.println();
}
}
}
2条答案
按热度按时间qojgxg4l1#
下面的代码将迭代内部循环21次,每次都以(j +(i21))为模,因为i实际上代表了内部循环的21次迭代,所以
i
本质上是一个跟踪器,用来跟踪j
总共发生了多少次迭代。我之前写的使用
j+i
的代码可以工作,虽然我不知道为什么。我不小心漏掉了(i21),所以我很惊讶它仍然工作得很好。当使用row = 5调用时,将给出输出:
mzmfm0qo2#
如果内层循环打印21个数字,那么我会说从0到20迭代,你可以忽略这些迭代,基本上只是在两个循环之外保留一个数字,在打印之后递增它并计算模10,外层循环基本上只是添加换行符。
大概是这样的
注意,
num
是在两个循环之外定义的,也就是说,它只在定义它的作用域中可见,也就是printNumberSlide()
方法。如果你把它移到外部循环中,那么你基本上是在每一行重新定义它,从而重置值。这基本上是内部循环所做的,只是把作用域再缩小一点。注意:这里通过保持一个不断递增的数字来精确地获取“最后一行结束的地方”。还有其他方法可以从行和列信息中产生结果(见其他答案),所以选择最适合你的方法:)