我为Java分配做了一个非常简单的计算器,但是当用户输入一个非数字时,我陷入了需要添加文本的部分。我需要在其中添加什么?需要在哪里添加它才能起作用?我尝试了多种在Internet上搜索的方法,但是似乎都没有。
从技术上讲,这种方式有效,但是由于某种原因,它前后总是带有红色文本。
public class MySwitchExample {
public static void main(String[] args) {
char operator;
double num1;
double num2;
double result;
Scanner s= new Scanner(System.in);
System.out.print("Enter operator (either +, -, * or /): ");
operator= s.next().charAt(0);
System.out.print("Enter number 1 and number 2: ");
try {
num1= Double.parseDouble(s.next());
num2= Double.parseDouble(s.next());
} catch (NumberFormatException e) {
// Double.parseDouble has changed specs several times, so fall through
// gracefully
e.printStackTrace();
System.out.print("You entered text as a number: ");
return;
}
switch (operator) {
// performs addition between numbers
case '+':
result = num1 + num2;
System.out.print(num1 + "+" + num2 + " = " + result);
break;
// performs subtraction between numbers
case '-':
result = num1 - num2;
System.out.print(num1 + "-" + num2 + " = " + result);
break;
// performs multiplication between numbers
case '*':
result = num1 * num2;
System.out.print(num1 + "*" + num2 + " = " + result);
break;
// performs division between numbers
case '/':
result = num1 / num2;
System.out.print(num1 + "/" + num2 + " = " + result);
break;
default:
System.out.println("Invalid operator!");
break;
}
}
}
您可以使用scanner.nextDouble()直接读取双精度数,而不是读取字符串并将其转换。您已经正确放置了try / catch,但是e.printStackTrace()在控制台中向您显示了错误(删除此行)。我建议您将try / catch放入while循环内,这样,当用户插入字母时,程序不会关闭,而是在两个数字都正确的情况下循环。您可以使用一个简单的布尔值来执行此操作
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句