if语句中使用的Java扫描程序

时间:2013-10-28 15:10:20

标签: java if-statement

我是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 个答案:

答案 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));