这是一个旨在生成一系列从 1 到 1000 的连续整数,总和为 1000 的程序。我的函数 While1000 可以工作,但如果我尝试修改此代码以使用其他循环结构来获得相同的输出这是行不通的。我修改后的代码在使用 do-while 和 for 循环时发生 block 。当我在 Eclipse 中运行它们时,我没有得到任何响应。没有语法错误或异常警告。
以下是代码的不同版本:
public class While1000 {
public static void main(String args[]) {
int i, j, k, sum = 0;
for (i = 1; i <= 1000; i++) {
j = i;
sum = i;
while (sum < 1000)
sum += ++j;
if (sum == 1000) {
for (k = i; k <= j; k++)
System.out.print(k + " ");
System.out.println();
}
}
}
}
public class dowhile1000 {
public static void main(String args[]) {
int i, j, k, sum = 0;
for (i = 1; i <= 1000; i++) {
do {
j = i;
sum += ++j;
}
while (sum >= 1000);
if (sum == 1000) {
for (k = i; k <= j; k++)
System.out.print(k + " ");
System.out.println();
}
}
}
}
public class For1000 {
public static void main(String args[]) {
int i, j, k, sum = 0;
for (i = 1; i <= 1000; i++) {
for (j = i; sum >= 1000; ++j) {
sum += j;
}
if (sum != 1000) continue;
for (k = i; k <= j; k++)
System.out.print(k + " ");
System.out.println();
}
}
}
正确的输出应该是:
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
198 199 200 201 202
1000
最佳答案
你的括号和缩进有点草率。这不会提高代码的可读性。
dowhile1000:如果在进入循环之前 while 条件可能为 false,则 do-while-loop 和 while 循环将有所不同。事实并非如此。因此 do-while-条件必须与 while 条件相同。第一次运行循环后,您的 do-while 条件不成立,因此循环终止。当然,j 和 sum 必须在 while 循环之前初始化。 j 在代码中运行的每个循环都会重置。
For1000:只要语句 2 中的条件为真,就会重复 for 循环。在 for-j-循环中,进入循环时条件永远不会为真,因此循环永远不会执行。 sum 必须在每个新 j 之前重置。因为 j 在 for 条件为真后递增,所以在 for-k 循环中测试必须是 k
public class While1000 {
public static void main(String args[]) {
int i, j, k, sum = 0;
for (i = 1; i <= 1000; i++) {
j = i;
sum = i;
while (sum < 1000)
sum += ++j;
if (sum == 1000) {
for (k = i; k <= j; k++)
System.out.print(k + " ");
System.out.println();
}
}
}
}
public class Dowhile1000 {
public static void main(String args[]) {
int i, j, k, sum = 0;
for (i = 999; i <= 1000; i++) {
j = i;
sum = 0;
do {
sum += j++;
} while (sum < 1000);
if (sum == 1000) {
for (k = i; k < j; k++)
System.out.print(k + " ");
System.out.println();
}
}
}
}
public class For1000 {
public static void main(String args[]) {
int i, j, k, sum = 0;
for (i = 1; i <= 1000; i++) {
sum = 0;
for (j = i; sum < 1000; ++j) {
sum += j;
}
if (sum != 1000)
continue;
for (k = i; k < j; k++)
System.out.print(k + " ");
System.out.println();
}
}
}
关于java - 运行测试不同循环结构的程序后没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57029831/