0

因此,通常为了检测用户输入,我使用 int 和 double 变量类型。

例子:

    Scanner in = new Scanner(System.in);
    int selection;
    System.out.println("Welcome to RPG! (prototype name)\nIn this game, you do stuff.\nChoose a class:\n1. Soldier\n2. Knight\n3. Paladin\n4. Heavy");
    selection = in.nextInt();   
    if(selection == 1){
        System.out.print("you are a soldier");
    }
    else{
        System.out.print(selection);
    }
}

这种技术通常对我很有效,但我注意到如果用户在 int 变量中输入一个字母,游戏会崩溃,因为整数不能存储字母。(对吗?)所以我尝试在其位置使用 String 变量,如下所示:

    Scanner in = new Scanner(System.in);
    String selection;
    System.out.println("Welcome to RPG! (prototype name)\nIn this game, you do stuff.\nChoose a class:\n1. Soldier\n2. Knight\n3. Paladin\n4. Heavy");
    selection = in.next();  
    if(selection == "1"){
        System.out.print("you are a soldier");
    }
    else{
        System.out.print(selection);
    }
}

起初这似乎可行,但正如您所看到的,我已将其设置为如果变量“选择”等于 1,它将打印“你是一名士兵”,但这不起作用,而是打印出“选择”变量值(1)。我做错了什么还是应该使用不同类型的变量?

4

5 回答 5

1

你可以用这个:

 try{
           int type = Integer.parseInt(selection);
           switch(type){
           case 1:{
            //do soldier stuff   
           }
           case 2:{
            // do knight stuff   
           }
           default:{
               //do other stuff
           }
           }
       }catch(NumberFormatException exc ){
           System.out.println(selection + "is not a number, try again!!!");
       }
于 2013-09-20T00:33:36.570 回答
0
selection == "1"

将字符串与String#equals.

"1".equals(selection)
于 2013-09-20T00:33:54.037 回答
0

有很多方法可以做到这一点。我想快速说明的是,如果您正在比较应该使用的字符串:

var.equals("字符串");

由于您只使用一个字符,因此您可以使用一个字符,在这种情况下,正确的语法是:

var == '1'

如果你想花哨,你可以在你的 read 语句周围做一个 try catch,然后读入一个字符串并将其解析为一个整数,但这有点高级。

于 2013-09-20T00:34:29.860 回答
0

更改selection == "1""1".equals(selection)

于 2013-09-20T00:34:36.390 回答
0

使用 .equals() 比较字符串“1”和选择并阅读这个简单的解释是

x == y仅当两者都引用时才返回 truexy引用同一个对象,而这不是您的情况。equals 检查内容是否相等,如果xy所指的内存位置的内容相等或不相等。

于 2013-09-20T00:35:25.533 回答