0

私はプログラミングに不慣れなので、私を素晴らしい初心者と考えてください。ジレンマ:「はい」と応答するたびにコードを繰り返したい。ステートメントが最初に来て、ブール条件が最後に評価されるべきであるため、私は「dowhileloop」を使用します。

コード:

import java.util.Scanner;

class whysoserious {

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

        do{
        String go = YES;

        int setone = 0;
        int settwo = 0;

        System.out.println("Enter two numbers: ");

        setone = sc.nextInt();
        settwo = sc.nextInt();
        int set = setone + settwo;


        System.out.println("What is " +setone+ " + " +settwo+ " ? ");
        int putone = 0;
        putone = sc.nextInt();

        if (putone == set) 
            System.out.println("Correct!");

        else
            System.out.println("Wrong Answer - The correct answer is: "+set+"");

        System.out.println("Continue?");
        cont = sc.nextLine();
        } while (cont == go);
    }
}

CMDプロンプト行を追加するように求められました。

  • C:\ test> javac whysoserious.java whysoserious.java:15:シンボルシンボルが見つかりません:変数YES場所:クラスwhysoserious文字列go = YES; ^ whysoserious.java:38:シンボルシンボルが見つかりません:変数cont場所:クラスwhysoserious cont = sc.nextLine(); ^ whysoserious.java:39:シンボルシンボルが見つかりません:変数cont場所:クラスwhysoserious} while(cont == go); ^ whysoserious.java:39:シンボルsymbolが見つかりません:変数go location:class whysoserious} while(cont == go); ^4つのエラー

コンパイルしようとするたびにエラーが発生します。この背後にある知識は、ユーザーが「はい」または「いいえ」を入力するたびにコードを繰り返して続行したいということです。コードがdo{なしで機能することを確認してください。この時点で、私はdowhileで立ち往生しています。

4

4 に答える 4

7

複数の問題:

  • あなたは決して宣言しcontないYESので、コンパイラはそれらが何であるかを知りません

  • goループ内で宣言するため、while式の範囲外です

  • 文字列を と比較し==ても、ここで必要なことは実行されません。同じ内容の 2 つの異なる文字列が存在する可能性があります。equals代わりに使用してください。

コンパイラからのエラー メッセージには、最初の 2 つのエラー メッセージが表示されます。コンパイラの内容に注意してください。

最も簡単な修正:のString cont;doに追加し、削除goしてテストを作成するwhile ("YES".equals(cont)); ただし、ユーザーが「yes」、「Y」、「YES」、またはその他のバリエーションを入力すると、これは終了します。

于 2010-12-01T17:55:09.857 に答える
3

この線:

 String go = YES;

読む必要があります:

String go = "YES";

そうしないと、コンパイラは YES を知らない変数であると判断し、びっくりしてしまいます。

于 2010-12-01T17:55:12.257 に答える
1

@Ronnie Howellが述べたことに加えて... equals()String equalityのメソッドを使用します。

while (cont == go);

読むべき...

while (cont.equals(go));

PS ...定義した場所がわかりませんcontdoループの外で宣言してください。

于 2010-12-01T18:01:10.833 に答える
0

次の作品:

import java.util.Scanner;

public class WhySoSerious {

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

        do {

            System.out.println("Enter two numbers: ");

            int setone = sc.nextInt();
            int settwo = sc.nextInt();
            int set = setone + settwo;


            System.out.println("What is " + setone + " + " + settwo + " ? ");
            int putone = sc.nextInt();

            if (putone == set)
                System.out.println("Correct!");
            else
                System.out.println("Wrong Answer - The correct answer is: " + set + "");
            System.out.println("Continue?");
            cont = sc.next();
        } while (cont.equalsIgnoreCase(go));
    }
}
于 2010-12-02T11:46:06.310 に答える