如果数字达到n,如何停止循环?我试过了 break;
但循环仍然没有停止。
Scanner in = new Scanner(System.in);
int i, j;
int n = in.nextInt();
int number = 1;
for(i = 1; i <= n; ++i) {
for(j = 1; j <= i; ++j) {
System.out.print(number);
++number;
if(number >= n){
break;
}
}
System.out.println();
}
输入: 9
预期产量:
1
23
456
789
或
输入: 12
预期产量:
1
23
456
78910
1112
5条答案
按热度按时间rwqw0loc1#
代码中应避免使用break和带标签的break。因此,您可以使用如下循环:
打印外部初始化内部循环更新的k变量。
用输入变量检验k的内外环断开条件
编辑:为了更好地理解:
i变量用于保持需要打印的行数。
j变量用于保持每行中要打印的元素数。
在大多数情况下,被打印的值都与行号或行中的元素号在上下文中,但是这里的打印值与它不同步,所以我们在2rd变量k中维护它。
8ehkhllq2#
使用带标签的break语句,可以从嵌套循环中断:
csbfibhn3#
有很多方法可以做到这一点。最简单的方法是使用一个标签一次中断几个循环:
然而,这些带有标签的break语句看起来与gotos可疑地相似,gotos是不受欢迎的。更适合教师的版本是使用布尔标志,并检查每个循环中的标志:
请注意,这将引入一个额外的换行符,您通常希望确保接下来打印的内容显示在不同的行上。
另一种选择是简单地将初始条件复杂化,而不使用任何标志:
为了便于阅读,我推荐第2版。另外,我会写如下:
关键的区别是使用0到n-1的计数来重复n次(大多数程序员非常习惯于这样,而不是从1到n计数),并且在for中定义循环变量,因此尝试在循环之外使用它们是错误的。这有助于避免意外重用变量。
p1iqtdky4#
pqwbnv8z5#
通过将for循环与嵌套循环一起使用,可以实现如下效果:
您有一行,每行递增1
您有一个列变量,每行或每行增加一个
您有一个从1开始打印到输入数字的数字,例如输入12。
在内部循环中,需要检查列是否小于或等于行,递增的数字是否小于输入的数字。