我使用do-while循环创建一个Java项目,以便在5到15之间从用户那里获取一个数字。之后,我将使用用户输入的数字创建一个正方形和三角形。
我目前仍然坚持让我的问题重复。运行程序后,它运行正常,直到我第二次输入一个数字,提示用户输入一个数字。如果号码无效,它将不会打印。
我尝试移动第二个"在do-loop中输入一个数字......" 但是只打印了"抱歉,无效" 提示。我在while循环中用case语句做了类似的事情,它运行正常,但我对do循环有困难。
有人能指出我正确的方向吗?
import java.util.Scanner;
public class doLoop {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int number;
int minimum = 5;
int maximum = 15;
System.out.print("Enter a number between " + minimum + " and " + maximum + ":" );
do {
number = input.nextInt();
if (number >= minimum && number <= 15)
break;
else
System.out.print("Sorry, invalid");
break;
} while (false);
System.out.print("\nEnter a number between " + minimum + " and " + maximum + ":" );
number = input.nextInt();
}
}
答案 0 :(得分:0)
通常,在while循环中使用break
被认为是一种不好的做法。你应该有这样的东西
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int number;
int minimum = 5;
int maximum = 15;
do{
System.out.print("Enter a number between" + " " + minimum + " " + "and" + " " + maximum + ":" );
number = input.nextInt();
if (number < minimum || number > maximum)
System.out.print("Sorry, invalid");
} while (number < minimum || number > maximum);
}
答案 1 :(得分:0)
您的代码中的中断和扫描仪输入位置存在逻辑错误。如果你真的想要坚持自己拥有的东西,我发现只需添加一个布尔检查而不是使用中断就更简单了。下面你可以看到我也是这样你知道的最终实践,并且这个变量不应该在代码中被改变或篡改。我添加了一个布尔值,因为你想检查do while为false,然后我们将它设置为true,如果它传递你所做的if语句。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int number;
boolean check = false;
// Final, because they are constant through-out the program
final int minimum = 5;
final int maximum = 15;
do {
System.out.print("Enter a number between " + minimum + " and " + maximum + ":" );
number = input.nextInt();
if (number >= minimum && number <= maximum)
check = true;
else
System.out.println("Sorry, invalid");
break;
} while (check);
}