我制作了一个我遇到问题的计算器。我想要两个' Do While'循环:一个完全重新启动程序,另一个如果用户输入的不同于' 1,2,3或4'
你可以在顶部看到两个变量。
总结:我想要有两个循环。一个用于重新启动程序,另一个用于在错误之后重新启动以选择符号。
public static void main(String[] args) {
double result = 0; // multiple variable , switch to choose
int retryAfterErrorSign = -1;
int retry = -1;
System.out.println("Firt number: ");
Scanner sc = new Scanner(System. in );
double nbre1 = sc.nextDouble();
System.out.println("Second number: ");
double nbre2 = sc.nextDouble();
System.out.println("1 : Addition");
System.out.println("2 : Soustraction");
System.out.println("3 : Multiplication");
System.out.println("4 : Division");
retry = sc.nextInt(); //Loop to rechoose number.
int sign = sc.nextInt();
switch (sign) {
case 1:
if (sign == 1) result = nbre1 + nbre2;
System.out.println("The result is " + result);
break;
case 2:
if (sign == 2) result = nbre1 - nbre2;
System.out.println("The result is " + result);
break;
case 3:
if (sign == 3) result = nbre1 * nbre2;
System.out.println("The result is " + result);
break;
case 4:
if (sign == 4) result = nbre1 / nbre2;
System.out.println("The result is " + result);
break;
default:
if (sign != 1 && sign != 2 && sign != 3 && sign != 4) System.out.println("Error , number not recognize");
System.out.println("Retry (0/1)");
retryAfterErrorSign = sc.nextInt(); //loop to rechoose sign;
}
}
答案 0 :(得分:2)
你所谈论的通常被称为“游戏循环”。它基本上将整个应用程序包装在一个循环中,该循环检查是否存在某些终止条件,或者只是重新启动整个应用程序。在类似Java的伪代码中,结构可能如下所示:
bool keepPlaying = true;
while (keepPlaying) {
// everything goes in here.
// if the program should ever end, set keepPlaying to false.
}
在那个循环中你将拥有你的“游戏逻辑”(在这种情况下,“游戏”只是一个计算器,但概念是相同的)。这个逻辑可能看起来像这样:
String input = getInputFromUser();
while (!isValid(input)) {
input = getInputFromUser();
}
// perform the logic on the input
巧合的是,还有另一个循环,但它与驱动整个界面的总体“游戏循环”完全分开,并且未知。
这些逻辑抽象中的每一个都为从代码中提取方法提供了良好的界限。因此,您的整个main()
方法可能只是“游戏循环”,并且该循环可能只有一个语句,playGame();
或具有该性质的东西。然后 方法将包含应用程序逻辑,它在内部有一些循环,它们自己调用更多的抽象(例如getInputFromUser();
);
答案 1 :(得分:1)
Do-While-Loop听起来像是来自BASIC。在Java中,写
while(condition) {
}
或
do {
} while(condition);
注意语义差异:第一个例子测试在进入身体之前的条件;第二个例子在执行完身体后测试。
答案 2 :(得分:0)
有一些方法,另一种方法是将您的代码放在while(true){... check for a specific condition if true {exit while}... }
while(true){
System.out.println("Firt number: ");
Scanner sc = new Scanner(System.in);
double nbre1 = sc.nextDouble();
System.out.println("Second number: ");
double nbre2 = sc.nextDouble();
System.out.println("1 : Addition");
System.out.println("2 : Soustraction");
System.out.println("3 : Multiplication");
System.out.println("4 : Division");
retry = sc.nextInt();//Loop to rechoose
if (retry !=1 && retry !=2 && retry !=3 && retry !=4 ){
break;
}
//....code
}