0

ユーザーに「Java は好きですか?」と尋ねるプログラムを作成することになっています。ユーザーが「はい」または「いいえ」を入力した場合は、「ありがとうございます」と出力してプログラムを終了します。

import java.util.*;
public class Questionaire{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);

        System.out.print("Do you love java? > ");
        String output=sc.nextLine();

        while(!output.equalsIgnoreCase("yes") || !output.equalsIgnoreCase("no")){

            System.out.println("Try again!");
            System.out.print("Do you love java? > ");
            output=sc.nextLine();
            if(output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no")){
                System.out.println("Thank you!");
                break;
            }
        }

    }
}

コメントを読んで、もう一度自分で試してみてください。

import java.util.*;
public class Questionaire{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);

        System.out.print("Do you love java? > ");
        String output=sc.nextLine();

        while(!output.equalsIgnoreCase("yes") || !output.equalsIgnoreCase("no")){
            if(output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no")){
                System.out.println("Thank you!");
                break;
            }

            System.out.println("Try again!");
            System.out.print("Do you love java? > ");
            output=sc.nextLine();

        }



    }
}

そして、私はそれを手に入れました!!!ありがとう人々!

4

5 に答える 5

1

while loopが入力されるまで実行されるこの単純なアプローチを試してくださいyes or no。ユーザーが入力したときにのみ壊れますyes or noのでThank you!最後に を出力してください。

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    System.out.print("Do you love java? > ");
    String output = sc.nextLine();

    while(!(output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no"))) {
        System.out.println("Try again!");
        System.out.print("Do you love java? > ");
        output = sc.nextLine();
    }

    System.out.println("Thank you!");
}
于 2013-04-24T03:59:38.553 に答える
1

コードをリファクタリングしました。これでうまくいくはずです。コードの使用do-whileは常に 1 回実行されますが、出力が yes または no の場合、再度ループすることはありません。

public class Questionaire{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);

        String output;

        do{

            System.out.print("Do you love java? > ");
            output=sc.nextLine();

            if(output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no")){
                System.out.println("Thank you!");
            }
            else
            {
                System.out.println("Try again!");
            }

        }while(!output.equalsIgnoreCase("yes") && !output.equalsIgnoreCase("no"))

    }
}
于 2013-04-24T03:54:21.327 に答える
1
while(!output.equalsIgnoreCase("yes") || !output.equalsIgnoreCase("no"))

条件をに変更する必要があります

while(!output.equalsIgnoreCase("yes") && !output.equalsIgnoreCase("no")){

また、最初の入力ケースを処理するために、while の外に if ブロックを追加する必要があります。

理由:

ケース 1: 「ABC」と入力するとします。今

「はい」= true と等しくない

「いいえ」=真とはなりません(短絡ORを使用しているため評価されません)。このケースは問題なく動作します。

ケース 2: 「はい」と入力したとします。今

「はい」= false と等しくない

「いいえ」=真ではありません。

ブール代数による: False OR True は True に評価されます。したがって、不定ループです。

于 2013-04-24T03:48:34.790 に答える
0

やってみる(元のプログラムより扱いやすい)

String output = "";
 while (!output.equalsIgnoreCase("yes") || !output.equalsIgnoreCase("no")) {
     System.out.print("Do you love java? > ");
     output = sc.nextLine();
     if (output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no")) {
         System.out.println("Thank you!");
         break;
     } else {
         System.out.println("Try again!");
     }
 }
于 2013-04-24T03:49:31.623 に答える
-1

クラスに最適なソリューションは次のとおりです。

import java.util.*;
public class Questionaire{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.print("Do you love java? > ");
        String output=sc.nextLine();
        while(true){ // Keep doing this forever
            if(output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no")){ // If the user enters yes or enters no
                System.out.println("Thank you!"); //Print thank you
                break; // Exit
            } else {
                System.out.println("Try again"); //Print try again
                output = sc.nextLine(); // Get new user input.
            }
        }
        sc.close();

    }
}
于 2013-04-24T03:49:16.673 に答える