我是java的初学者,我一直在努力做到这一点。它应该是一个简单的计算器。我知道可能有更好/更有效的方法来做到这一点,但这不是我想要的。当使用switch
选择要运行的操作时,我遇到了一个小问题。基本上,每次运行代码时都会选择正确的代码来运行(如果输入的String
是" +",它将添加double
s) ,以后似乎总是运行default
代码(打印"命令无法识别。")。如果我删除了default
代码,它可以完美地工作(当然,这样,如果用户输入一个未知命令就会出错)并且我可以很容易地做到这一点,但我真正想要的是一种方法一个默认代码,并知道它为什么不以这种方式工作。
请帮忙。
感谢。
import java.util.Scanner;
public class App {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
double v1 = scan.nextDouble();
double v2;
double v3;
scan.nextLine();
while(1<2){
String op = scan.nextLine();
switch(op){
case "+":
v2 = scan.nextDouble();
v1 = v2 + v1;
System.out.println("="+v1);
break;
case "-":
v2 = scan.nextDouble();
v1 = v2 - v1;
System.out.println("="+v1);
break;
case "*":
v2 = scan.nextDouble();
v1 = v2 * v1;
System.out.println("="+v1);
break;
case "/":
v2 = scan.nextDouble();
v1 = v1 / v2;
System.out.println("="+v1);
break;
case "^":
v2 = scan.nextDouble();
v3 = v1;
for(int i = 1;i<v2;i++){
v1 = v1*v3;
}
System.out.println("="+v1);
break;
case "%":
v2 = scan.nextDouble();
v1 = (v1/100)*v2;
System.out.println("="+v1);
break;
default:
System.out.println("Command not recognized.");
}
}
}
}
输出是这样的:
5
*
5
=25.0
Command not recognized.
答案 0 :(得分:2)
您应该在此行中使用scan.next()
代替scan.nextLine()
:
String op = scan.next();
执行scan.nextLine()
时会消耗新的换行符,因此op
设置为&#34;新行&#34};并且switch
以默认行为结束。
使用scan.next()
,您将能够执行此操作:
5
*
5
=25.0
*
2
=50.0
/
25
=2.0
答案 1 :(得分:1)
在break;
System.out.println("Command not recognized.");
修复它只是打破循环。
default:
System.out.println("Command not recognized.");
break;
}
break;
}
由于你的while循环永远不会结束,它会继续重新运行代码。