为什么我的代码没有识别输入?

时间:2015-10-23 03:36:43

标签: java

我希望此代码识别用户输入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;
     }
}

2 个答案:

答案 0 :(得分:1)

问题在于您尝试在Stringchar之间进行比较。你在做什么:

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));
        }
    }
}