我试图制作一个简单的计算器,但是有点卡住了。我在那里有大多数程序,但是我不明白为什么我的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。对于这种困难,我感到很抱歉,我一直在学习方法,并且感到非常困惑。
答案 0 :(得分:0)
好吧,假设问题是当输入数值(例如,输入“ 8”)时程序会终止,问题出在测试中。
因此,default
中的switch
将显示该消息(然后将输出垃圾作为答案),但是检查为(choice > 0 && choice < 5);
,如果输入“ 8“。
简便的解决方案是更改默认值以将值放在范围内。