1

だから私はJavaでjeapordyを作成しています.スペルが間違っていても気にしませんが(間違っていたとしても)、これまでにコード化された質問は1つだけで、答えは1つしかありません。答えは正しいです。

最初の歴史の質問をして答えはジョージですが、答えが間違っていることが出力されています。最初の歴史の質問も 100 の価値があります。私はまだ数学の部分をコーディングし始めていません。

私の問題を解決するのを手伝ってくれてありがとう!私は初心者なので、おそらく本当に簡単です。

import java.util.Random;
import java.util.Scanner;

public class game {
public static void main (String[] args){
    //Utilites
    Scanner s = new Scanner(System.in);
    Random r = new Random();

    //Variables
    String[] mathQuestions;
    mathQuestions = new String[3];
    mathQuestions[0] = ("What is the sum of 2 + 2");
    mathQuestions[1] = ("What is 100 * 0");
    mathQuestions[2] = ("What is 5 + 5");

    String[] historyQuestions;
    historyQuestions = new String[3];
    historyQuestions[0] = ("What is General Washingtons first name?");
    historyQuestions[1] = ("Who won WWII, Japan, or USA?");
    historyQuestions[2] = ("How many states are in the USA?");


    //Intro
    System.out.println("Welome to Jeapordy!");
    System.out.println("There are two categories!\nMath and History");
    System.out.println("Math       History");
    System.out.println("100          100");
    System.out.println("200          200");
    System.out.println("300          300");


    System.out.println("Which category would you like?");
        String categoryChoice = s.nextLine();
    System.out.println("For how much money?");
        int moneyChoice = s.nextInt();
            if (categoryChoice.equalsIgnoreCase("history")){
                if (moneyChoice == 100){
                    System.out.println(historyQuestions[0]);
                    String userAnswer = s.nextLine();
                    s.nextLine();
                    if (userAnswer.equalsIgnoreCase("george")){
                        System.out.println("Congratulations! You were right");
                    }
                    else{
                        System.out.println("Ah! Wrong answer!");
                    }

                }
            }

        }
}
4

2 に答える 2

3

を呼び出すnextInt()と、改行文字が読み取られずに残されるため、その後の の呼び出しでnextLine()は空の文字列が返されます (行末まで読み取られるため)。newLine()この末尾の改行を読み取る/破棄する前に 1 回呼び出します。

if (moneyChoice == 100) {
    System.out.println(historyQuestions[0]);
    s.nextLine();  // <--
    String userAnswer = s.nextLine();
    System.out.println(userAnswer);
    ...

余談ですが、使いScanner終わったら忘れずに を閉じてくださいs.close()

于 2013-08-22T22:28:19.263 に答える
1

int moneyChoice = s.nextInt();整数のみを読み取ります。読み取り保留中の改行を残します。次にString userAnswer = s.nextLine() ;、"george" とは明らかに異なる空行を読み取ります。解決策: int の直後の改行を読み取り、プログラム全体で読み取ります。独自のメソッドを作成することをお勧めしますnextIntAndLine()

int moneyChoice= s.nextInt() ;
s.nextLine();
于 2013-08-22T22:30:47.613 に答える