-1

我是 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);
        }
    }
}
4

4 回答 4

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);
于 2013-10-28T15:12:16.187 回答
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!");
    }   
于 2013-10-28T15:12:26.203 回答
1

您不能String使用运算符比较 s >。在 Java 中,您无法定义自己的操作员行为。

代替

String damage = input.nextLine();

利用

Integer damage = input.nextInt();
于 2013-10-28T15:12:51.863 回答
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));
于 2013-10-28T15:22:46.777 回答