如果是整数或双精度,请确定用户的输入?

时间:2015-03-02 12:28:52

标签: java integer double

我有这段代码:

    kb.useDelimiter("\\b*[\\s]*");
    int answer = 0;
    String num1, num2;
    char operator;

    System.out.print("Enter calculation: "); // user will input **1+6**

    num1 = kb.nextInt();
    operator = kb.next().charAt(0);
    num1 = kb.nextInt();

    switch(operator)
    {
        case '+':
            if (num1.hasNextInt)
            {
                 int aa= Integer.parseInt(num1);
                 int bb= Integer.parseInt(num2);
                answer = CalculatorMethods.add(aa,bb);
            }
            else
            {
                 //converts the String into Double
            }
            break;
    }

我试图在这段代码中做的是,用户可以像这个1 + 1一样直接输入程序。而我所做的是将每个分开,因此它将有1,+和1 ... 如果用户输入一个整数....然后我将它转换为一个整数然后调用方法....否则它会将字符串转换为一个双,然后将调用该方法..

所以,当我编译上面的代码时,我得到的是很多错误,如不兼容的类型,找不到符号hasNextInt ....我的代码有什么问题?

任何帮助都会得到赞赏。

3 个答案:

答案 0 :(得分:1)

您的num1变量被声明为String,但您正在尝试为其分配一个int(我假设kb是扫描器的一个实例)。然后你试图调用num1.hasNextInt()这不是String的方法 - 我想你想说kb.hasNextInt()

答案 1 :(得分:1)

nextInt()返回int 所以你不能做num1 = kb.nextInt();

Stringint都没有hasNextInt

您必须将num1num2声明为int

切换案例中的一些变化:

case '+':

                answer = CalculatorMethods.add(num1,num2);
          break;

答案 2 :(得分:0)

创建一个API,告诉您字符串是整数或双精度型

public boolean isInteger(String value) { 
    try {
        Integer.parseInt(value);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

然后,

if (isInteger(num1) && isInteger(num2)){ // then check if it is integer do integer operation
   int aa= Integer.parseInt(num1);
   int bb= Integer.parseInt(num2);
   answer = CalculatorMethods.add(aa,bb);
}else{
     //converts the String into Double
}