Java - 通过用户输入退出 do-while 循环
Java - get out of the do-while loop with an input of user
我正在尝试编写一个允许在无限循环内生成随机数的程序。如果用户按 'c' 它将退出循环。但是循环只在我按下 c 时开始,它应该在我按下 'c'.
之前开始并且应该停止
import java.util.Random;
import java.util.Scanner;
public class main{
public static void main (String[] args) {
Random rand = new Random();
int[] randNumber = new int[100];
Scanner scanner = new Scanner(System.in);
char c = scanner.next().charAt(0);
do {
for (int i = 0; i <= 99; i++) {
randNumber[i] = rand.nextInt(100);
}
for (int i = 0; i < 99; i++) {
if (randNumber[i] < randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " smaller than " + randNumber[i + 1]);
} else if (randNumber[i] > randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " greater than " + randNumber[i + 1]);
} else if (randNumber[i] == randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " equal to " + randNumber[i + 1]);
} else {
System.out.println("Wrong!");
}
}
} while (c == 'c');
}
}
另外我想知道如何只使用 while 循环而不是 do-while 循环来完成这个程序。当我只在开始时使用 while(1)
然后使用来自输入的 if 语句打破循环时,但这也不起作用。里面还有两个for循环。
非常感谢
关于第一个查询,将您在 do-while 循环中输入的代码行移动,这样每次迭代后它都会要求输入,如果您输入 'c',它将继续否则它会挣脱。
关于第二个查询,如果您使用 while(1) 并使用 if 语句检查 'c' 的用户输入并在用户输入 'c' 时中断,它应该可以工作。
您需要在循环内请求用户输入;否则,c
永远不会改变。
Random rand = new Random();
int[] randNumber = new int[100];
Scanner scanner = new Scanner(System.in);
// Just set it to 'c' as default so it enters the loop at least once. IMO this is better than an infinite loop with breakout or having another default value for c and checking it, or using a do while loop
char c = 'c';
while (c == 'c') {
for (int i = 0; i <= 99; i++) {
randNumber[i] = rand.nextInt(100);
}
for (int i = 0; i < 99; i++) {
if (randNumber[i] < randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " smaller than " + randNumber[i + 1]);
} else if (randNumber[i] > randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " greater than " + randNumber[i + 1]);
} else if (randNumber[i] == randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " equal to " + randNumber[i + 1]);
} else {
System.out.println("Wrong!");
}
}
// Ask for the next input
char c = scanner.next().charAt(0);
}
我正在尝试编写一个允许在无限循环内生成随机数的程序。如果用户按 'c' 它将退出循环。但是循环只在我按下 c 时开始,它应该在我按下 'c'.
之前开始并且应该停止import java.util.Random;
import java.util.Scanner;
public class main{
public static void main (String[] args) {
Random rand = new Random();
int[] randNumber = new int[100];
Scanner scanner = new Scanner(System.in);
char c = scanner.next().charAt(0);
do {
for (int i = 0; i <= 99; i++) {
randNumber[i] = rand.nextInt(100);
}
for (int i = 0; i < 99; i++) {
if (randNumber[i] < randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " smaller than " + randNumber[i + 1]);
} else if (randNumber[i] > randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " greater than " + randNumber[i + 1]);
} else if (randNumber[i] == randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " equal to " + randNumber[i + 1]);
} else {
System.out.println("Wrong!");
}
}
} while (c == 'c');
}
}
另外我想知道如何只使用 while 循环而不是 do-while 循环来完成这个程序。当我只在开始时使用 while(1)
然后使用来自输入的 if 语句打破循环时,但这也不起作用。里面还有两个for循环。
非常感谢
关于第一个查询,将您在 do-while 循环中输入的代码行移动,这样每次迭代后它都会要求输入,如果您输入 'c',它将继续否则它会挣脱。 关于第二个查询,如果您使用 while(1) 并使用 if 语句检查 'c' 的用户输入并在用户输入 'c' 时中断,它应该可以工作。
您需要在循环内请求用户输入;否则,c
永远不会改变。
Random rand = new Random();
int[] randNumber = new int[100];
Scanner scanner = new Scanner(System.in);
// Just set it to 'c' as default so it enters the loop at least once. IMO this is better than an infinite loop with breakout or having another default value for c and checking it, or using a do while loop
char c = 'c';
while (c == 'c') {
for (int i = 0; i <= 99; i++) {
randNumber[i] = rand.nextInt(100);
}
for (int i = 0; i < 99; i++) {
if (randNumber[i] < randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " smaller than " + randNumber[i + 1]);
} else if (randNumber[i] > randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " greater than " + randNumber[i + 1]);
} else if (randNumber[i] == randNumber[i + 1]) {
System.out.println("Number " + randNumber[i] + " equal to " + randNumber[i + 1]);
} else {
System.out.println("Wrong!");
}
}
// Ask for the next input
char c = scanner.next().charAt(0);
}