public class Calculator {
public static void main(String[] args){
int answer;
Scanner scan = new Scanner(System.in);
String input;
System.out.println("Enter your operation please");
input = scan.next();
if(input.charAt(findsign(input))=='+'){
answer = firstnumber(input)+secondnumber(input);
System.out.println("Operation is addition");
System.out.println("The answer is " + answer);
}
else if(input.charAt(findsign(input))=='-'){
answer = firstnumber(input)-secondnumber(input);
System.out.println("Operation is subtraction");
System.out.println("The answer is " + answer);
}
else if(input.charAt(findsign(input))=='*'){
answer = firstnumber(input)*secondnumber(input);
System.out.println("Operation is multiplication");
System.out.println("The answer is " + answer);
}
else if(input.charAt(findsign(input))=='/'){
answer = firstnumber(input)/secondnumber(input);
System.out.println("Operation is division");
System.out.println("The answer is " + answer);
}
}
public static int findsign(String input){
int n=0;
for (n=0;n<input.length();n++){
if(input.charAt(n)=='+' || input.charAt(n)=='-' || input.charAt(n)=='*' || input.charAt(n)=='/'){
break;
}
}
return n;
}
public static int firstnumber(String input){
String number1 = input.substring(0,findsign(input));
int number = Integer.parseInt(number1);
return number;
}
public static int secondnumber(String input){
String number2 = input.substring(findsign(input),input.length());
int number = Integer.parseInt(number2);
return number;
}
}
我不明白这有什么困难,但显然计算器不断执行添加,而不是他们指定的操作。我让他们打印输入的操作,以查看&#34; if&#34;陈述有效,而且有。但是,他们仍然继续表演。我不确定它是否过于简单我会感到困惑或者此时是什么......所以如果你能提供帮助那就太棒了。
答案 0 :(得分:1)
在解析第二个数字时你不在一个人:
String number2 = input.substring(findsign(input)+1,input.length());
// ^^
添加有效,因为当您解析2+3
并传递"+3"
来解析int
时,操作成功,因为+
是有效的数字前缀。但是,如果您尝试使用2*3
,则可以尝试解析"*3"
int
,这不再有效。
答案 1 :(得分:0)
secondnumber()应该有&#34; ... substring(findsign(输入)+ 1&#34;,实际上,对于3-2,它将返回3和-2,你将计算&#34; 3 - -2&#34;,再次为5,如&#34; 3 + 2&#34;。
调试器或一点System.out.println会有所帮助,就像尝试&#34; 3 * 2&#34;:
Exception in thread "main" java.lang.NumberFormatException: For input string: "*2"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:569)
at java.lang.Integer.parseInt(Integer.java:615)
at Calculator.secondnumber(Calculator.java:51)
at Calculator.main(Calculator.java:22)