我希望此代码识别用户输入ex:2+3
并使其成为5
或者如果用户输入4*3
给我12
我该如何修改我的代码?
我目前正在
输入表达式:3+3
然后它给了我空间来输入两个这样的输入,这是不允许的 3_# 3和3
Exception in thread "main" java.lang.NumberFormatException: For input string: "3+3"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at Calculator.main(Calculator.java:13)
---- jGRAS
在给我那个错误之前^^^ 如何让它识别输入操作符并转到calculator1方法并处理基本算法?
提前感谢您的任何建议。 这是我的代码:
import java.util.Scanner;
class Calculator {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.print("Enter expression: ");
String d = kb.next();
String f = kb.next();
String e = kb.next();
int a = (Integer.valueOf(d));
int b = (Integer.valueOf(e));
char c = f.charAt(0);
calculator1(a, b, c);
}
public static int calculator1(int a, int b, char c) {
int fault = Integer.parseInt("Please Check Your Expression.");
if("+".equals(c))
System.out.print(a+b);
else if ("-".equals(c))
System.out.print(a-b);
else if ("*".equals(c))
System.out.print(a*b);
else if ("/".equals(c))
System.out.print(a/b);
return fault;
}
}
答案 0 :(得分:1)
问题在于您尝试在String
和char
之间进行比较。你在做什么:
if("+".equals(c))
....
应该是:
if('+' == c)
....
另外,请尝试使用Integer.parseInt()
,如下所示:
int a = (Integer.parseInt(d));
最后,您不能parseInt
完整的句子,例如"Please Check Your Expression."
。 Integer.parseInt
应该解析字符串以查找匹配数值。
因此,如果您要执行Integer.parseInt("5")
,则会返回int
5
。
看起来你的程序只是试图打印出结果。如果是这种情况,我会将calculator1
方法的返回类型从int
更改为void
,并在结尾处删除return fault;
。
答案 1 :(得分:0)
有一种更好的方法可以做到这一点。
使用JDK1.6,您可以使用内置的Javascript引擎将字符串转换为数学表达式并评估值。看一下下面的例子,你可以将你从用户那里得到的String值传递给这样的东西。
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception {
System.out.println("Welcome to my calculator. Enter quit to exit");
while(true) {
Scanner input = new Scanner(System.in);
System.out.print("Enter a mathematical expression: ");
String expression = input.next();
if(expression.equals("quit")) {
System.out.println("Thank you for using my calculator. Good bye!");
System.exit(0);
}
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
System.out.println("Solution is : " + engine.eval(expression));
}
}
}