我有这段代码:
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 ....我的代码有什么问题?
任何帮助都会得到赞赏。
答案 0 :(得分:1)
您的num1
变量被声明为String,但您正在尝试为其分配一个int(我假设kb是扫描器的一个实例)。然后你试图调用num1.hasNextInt()
这不是String的方法 - 我想你想说kb.hasNextInt()
。
答案 1 :(得分:1)
nextInt()
返回int
所以你不能做num1 = kb.nextInt();
String
或int
都没有hasNextInt
您必须将num1
和num2
声明为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
}