do / while循环问题

时间:2019-04-22 22:17:34

标签: java

我试图制作一个简单的计算器,但是有点卡住了。我在那里有大多数程序,但是我不明白为什么我的do / while循环不能正常工作。我希望用户输入0退出,或1〜4进行相应的计算。

但是,尽管我付出了很大的努力,我似乎​​还是无法完全正常工作。问题在于,它不会完全循环直到用户输入所需的内容,而是完全终止了。

任何帮助将不胜感激,谢谢!

import java.util.*;
public class Main
{
   public static void main(String[] args) {
   //variable declare
double number1,number2,answer=0;
int choice;
//scanner to get input from user
Scanner sc = new Scanner(System.in);
do{
//ask user to input number
System.out.println("Welcome user \n---------------------------------");
System.out.println("Enter the first number");
number1 = sc.nextDouble();
System.out.println("Enter the second number");
number2 = sc.nextDouble();
//ask user to enter the choice
System.out.println("What would you like to do? \n1)Addtion\n2)Subtraction\n3)Multiplication\n4)Division\n0)Exit");
choice = sc.nextInt();
//condition to exit the do while loop
if(choice == 0){
break;
}
//switch condition to loop the choice
switch(choice){
case 1 : answer = calcSum(number1,number2);break;
case 2 : answer = calcSub(number1,number2);break;
case 3 : answer = calcMult(number1,number2);break;
case 4 : answer = calcDiv(number1,number2);break;
default : System.out.println("What would you like to do? \n1)Addtion\n2)Subtraction\n3)Multiplication\n4)Division\n0)Exit");break;
}
//print th result after every iteration
displayResult(answer);
}while(choice>0&&choice<5);
   }
   //calculate sum
   static double calcSum(double a, double b){
   return a+b;
   }
   //subtraction
   static double calcSub(double a, double b){
   return a-b;
   }
   static double calcMult(double a, double b){
   return a*b;
   }
   //division
   static double calcDiv(double a, double b){
   return a/b;
   }
   //print result
   static void displayResult(double result){
   System.out.println("Result is "+result);
   }

}

我想让程序验证用户是否输入了所需的内容,例如0、1、2、3或4。对于这种困难,我感到很抱歉,我一直在学习方法,并且感到非常困惑。

1 个答案:

答案 0 :(得分:0)

好吧,假设问题是当输入数值(例如,输入“ 8”)时程序会终止,问题出在测试中。

因此,default中的switch将显示该消息(然后将输出垃圾作为答案),但是检查为(choice > 0 && choice < 5);,如果输入“ 8“。

简便的解决方案是更改默认值以将值放在范围内。