0
Scanner sc = new Scanner (System.in);
String enter = new String ("Enter your name brave soul: ");
System.out.println (enter);
String name = sc.next();
System.out.println ("Your name is: " + name + "? Y/N");
boolean y = true; 
boolean n = false;
String yesorno = sc.next();

String intro1 = new String ("Welcome to Urieka! The objective of this game is quite simple, just find the key to escape.");


if (true) {System.out.println (intro1);}   //here
else if (false) {System.out.println (enter);} //here

問題が発生しています。ユーザーが y を入力した場合に intro1 を出力したいのですが、間違って入力した場合は名前を入力するプロンプトが必要です。y を入力したかどうかに関係なく、現在 intro1 のみを印刷しています。

さらに、そのスキャナーを再度実行する方法はありますか?これが機能し、ユーザーが n/false を入力すると、「勇敢な魂の名前を入力してください」と表示され、他には何も表示されないと思います。else if 行のステートメントにスキャナーを追加する必要がありますか?

4

4 に答える 4

3
if (true) {System.out.println (intro1);}   //here

これは常にtrue であり、常に実行されます。else も同様に決して実行されません。

あなたは代わりに欲しい

if ("y".equalsIgnoreCase(yesorno)) {
   //...
}
于 2014-09-27T19:16:26.980 に答える
3

うーん...true常に真なので

if (true) { ... } 

常に実行されます。次のようなことをする必要があります:

System.out.println("y".equalsIgnoreCase(yesorno) ? intro1 : enter);
于 2014-09-27T19:17:47.307 に答える
2

これらのブール値を変更することはありません:

boolean y = true;
boolean n = false;

また、以前の投稿で述べたように、if(true) の使用を避けるようにしてください。

if (true) {System.out.println (intro1);}   //here

String オブジェクトをインスタンス化するときにコンストラクターを使用することは必須ではありません。

String enter = new String("Enter your name brave soul: ");
// IS THE SAME AS <=>
String enter = "Enter your name brave soul: ";

これがあなたの問題の私の解決策です:

Scanner scanner = new Scanner(System.in);
    boolean correctName = false;
    String name = "";

    while(!correctName){ //== Will run as long "correctName" is false. 
        System.out.println("Enter your name brave soul: ");
        name = scanner.next();
        System.out.println("Your name is: " + name + "? Y/N");
        String yesorno = scanner.next();
        correctName = "Y".equalsIgnoreCase(yesorno);  //== changes the boolean depending on the answer
    }
    System.out.println("Welcome to Urieka" + name + "! The objective of this game is quite simple, just find the key to escape.");
于 2014-09-27T19:39:11.253 に答える
0

If (true) は、常に if 条件に入り、実行中の intro01 を常に出力することを意味します。else 条件に到達することはありません。

あなたの状態は次のようになります:

if("y".equalsIgnoreCase(yesorno))
    System.out.println (intro1);
else
    System.out.println (enter);
于 2014-09-27T19:19:05.103 に答える