我是Java的新手,我正在尝试创建一个超级简单的代码,只是为了测试如何将一个if语句中的扫描器输入与另一个数字进行比较,然后根据if打印出一个响应。这就是我所拥有的,我在if行上遇到错误,我收到了这个错误:
The operator > is undefined for the argument type(s) String, int.
任何帮助都会很棒,因为一旦我想到这一点,我就会尝试用它来做其他事情。谢谢!
import java.util.Scanner;
class damagecalc {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.println("How much damage did you do?");
String damage = input.nextLine();
if(damage > 50){
System.out.println("You have died!");
}else{
System.out.println("Your damage amount is:" + input);
}
}
}
答案 0 :(得分:2)
你有
String damage = input.nextLine();
你想要
int damage = input.nextInt();
这个
System.out.println("Your damage amount is:" + input);
应该是
System.out.println("Your damage amount is:" + damage);
答案 1 :(得分:1)
您无法将字符串与整数进行比较。只需解析它。
try {
if (Integer.parseInt(damage) > 50) {i
System.out.println("You have died!");
} else {
System.out.println("Your damage amount is:" + input);
}
} catch (NumberFormatException e) {
e.printStackTrace();
System.out.println("You have entered a non integer number!");
}
答案 2 :(得分:1)
您无法使用String
运算符对>
进行比较。在Java中,您无法定义自己的运算符行为。
而不是
String damage = input.nextLine();
使用
Integer damage = input.nextInt();
答案 3 :(得分:1)
如果您正在寻找更强大的解决方案,也许您可以尝试以下方式:
public static int readInt(final String prompt){
final Scanner reader = new Scanner(System.in);
while(true){
System.out.println(prompt);
try{
return Integer.parseInt(reader.nextLine());
}catch(Exception ex){
System.err.println("Enter a valid integer: " + ex);
}
}
}
如果您计划阅读多个用户输入(可能是您这样做),我可能会建议您将Scanner
声明为静态类字段。你可以调用它:
final int damage = readInt("How much damage did you do?");
System.out.println(damage > 50 ? "You have died!" : ("Your damage amount is: " + damage));