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("文字列");

1文字しか使用していないため、文字を使用できます。その場合、正しい構文は次のようになります。

変数 == '1'

派手にしたい場合は、 read ステートメントの周りで try catch を実行し、文字列を読み取って整数に解析することができますが、それはもう少し高度です。

于 2013-09-20T00:34:29.860 に答える
0

selection == "1"に変更"1".equals(selection)

于 2013-09-20T00:34:36.390 に答える
0

文字列「1」と選択を比較するために . equals() を使用し、これを読み取ります簡単な説明は次のようになります

x == y両方があなたのケースにない同じオブジェクトを参照しているx場合にのみtrueを返します。yequals は内容が等しいかどうかをチェックします。意味は、xyが参照しているメモリ位置の内容が等しいかどうかです。

于 2013-09-20T00:35:25.533 に答える