我创建了一对for循环打印线条(每个新数字开始一个新行,它不会在这里显示):
1
22个
333个
4444
等。直到它达到9然后再回到1.
我应该将它转换为while和while while循环,并且在过去一小时内一直在尝试,但似乎无法做到。
public static void main(String[] args) {
for (int x=1; x <= 9; x++) {
for (int y = 1; y <=x ; y++){
System.out.print( x + "");
}
System.out.println();
}
// TODO code application logic here
for (int x=9; x >=1; x--) {
for (int y = 1; y <=x ; y++){
System.out.print( x + "");
}
System.out.println();
} int y =1;
int x = 1;
while (x <9){
while (y <=x){
y++;
System.out.print(x +"");{
}
System.out.println();
}
x++;
}
答案 0 :(得分:4)
for
循环语句在for (init; condition; post)
中有三个部分。这些部分用分号分隔。 init部分指定一个初始语句,条件决定循环体是否被执行,post指定一个post循环语句。
您可以使用while
循环执行相同的操作,除了不是单个语句,它实际上是几个语句。但是while
循环与for
循环不完全相同,因为continue
语句及其行为方式是一个问题。稍后会详细介绍。
提示是for
语句的各个部分用分号分隔,分号也用于分隔Java中的语句。
考虑以下for
循环源示例。
int i;
for (i = 0; i < 5; i++) {
// for loop body
}
所以你会在循环语句之前有一个init语句,i = 0
然后循环语句本身包含条件i < 5
,并且在结束大括号之前的循环中作为最后一行,你会设置后循环条件i++
。
由于评估do while
条件时,while
稍微复杂一些。在for
循环和while
循环中,将评估条件,如果表达式不为true,则根本不执行循环体,跳过它。在for
循环的情况下,执行init语句,然后评估条件以确定是否应该执行for
循环体。由于while
循环没有作为while
语句的一部分的init语句,因此将评估条件,如果不为真,则不执行while
循环体。
do while
循环的条件在第一次通过do while
循环体之后才会计算。所以do while
循环中的语句总是至少执行一次。然后评估do while
条件,如果为true,则执行返回到do
所在的顶部,再次执行do while
循环体。
循环的几种变体的一些代码,其中init为i = 0
且条件为i < 5
且帖子为i++
。在所有情况下,我都在循环体的外侧定义了变量i
。对于for
循环,在i
语句中定义变量for
会导致变量i
的范围(其可见性)仅限于{{ 1}}循环体,对于其他类型的循环不是这种情况。
for
我提到在执行int i;
for (i = 0; i < 5; i++) {
// for loop body
}
int i = 0;
while (i < 5) {
// while loop body
i++;
}
int i = 0;
do {
// do while loop body
i++;
} while (i < 5);
语句时发生的事情在比较这些形式的循环时会有所不同。想到它的方法是,当执行continue
语句时,会跳转到包含continue
语句的循环语句的右括号。所以这引入了一些需要考虑的事情。
查看上面的示例,但使用continue
语句。在下面的所有示例中,都有一个continue
语句,当变量continue
的值为3时,会导致执行跳到循环体的末尾。
通过此更改,i
循环将继续递增变量for
,因为它的帖子是i
语句的第三部分,在结束时执行环。但是对于for
循环和while
循环,变量do while
的递增是循环体的一部分,因此当i
执行时跳过到结尾循环,也跳过变量continue
的增量。
i
您可以对int i;
// first time init variable i to zero then evaluate condition
for (i = 0; i < 5; i++) { // evaluate condition and execute loop body if true
// for loop body
if (i == 3)
continue; // when i == 3 continue is executed to skip to end of loop
} // at point of braces, post executed, condition evaluated
int i = 0;
while (i < 5) { // evaluate condition and execute loop body if true
// while loop body
if (i == 3)
continue; // when i == 3 continue is executed to skip to end of loop
i++; // variable i only incremented when this statement is executed
} // braces indicate end of loop so jump back to top of loop
int i = 0;
do {
// do while loop body
if (i == 3)
continue; // when i == 3 continue is executed to skip to end of loop
// more statements which may be skipped by the continue
i++; // variable i only incremented when this statement is executed
} while (i < 5); // evaluate condition and jump to top of loop if true
循环do while
条件进行更改,以通过使用预增量运算符将变量while
的递增移动到i
条件评估中,while
运算符,在变量上,如下所示。我们使用预增量运算符,因为我们想在检查其值之前增加变量++
。
i
答案 1 :(得分:0)
for
loop是一个与while
loop非常相似的构造,除了它提供了一些额外的细节,可以减少boilerplate code。
for
循环的开头设置初始变量(在您的情况下为x),条件子句(x <= 9
)和递增器(x++
)。 while
循环不会执行这些操作,只需运行一段代码,同时满足()
中的条件子句。
将for
循环转换为while
很简单 -
for(int x = 0; x < 10; x++) {
int x = 0;
while(x < 10) {
x++;
}
while
循环具有与for
循环相同的所有功能,但没有语法糖。这应该可以帮助您转换问题中的循环,一般来说。
答案 2 :(得分:0)
尝试使用while循环:
int y = 1;
int x = 1;
while (x < 9) {
y = 1;
while (y <= x) {
y++;
System.out.print(x + "");
}
System.out.println();
x++;
}