2016-11-12 3 views
1

私は米国の首都でクイズを作成する必要がある割り当てがあります。私は入力ファイルから読み込み、状態名と大文字データを配列に格納しなければなりません。それから私は___の首都が何であるかをユーザーに尋ねなければなりません。配列から状態名をランダムに取得します。何も保証する方法はアレイで2回尋ねられますか?

私はクイズを完了しましたが、1つの要件に問題があります。どのような質問も二度尋ねられないようにするにはどうすればよいですか? たとえば、プログラムの実行ごとに、ユーザーがオハイオ州の首都について質問された場合、オハイオ州について再び質問するべきではありません。

すべての州に関する質問が表示された場合、プログラムは自動的にクイズの結果を提示して終了する必要があります。これはどうすればいいですか?ご協力ありがとうございました。

すべて正常に動作するこの要件を1つ追加するだけで済みます。私は三つのクラスの合計を持っていますが、私はあなたに自分自身次第クイズを設定し、クラスを与えた:

public void takeQuiz() throws FileNotFoundException 
{ 
    Scanner check = new Scanner(System.in); 

    int runThrough = 0; 
    int count = 0; 
    double right = 0.0; 
    String next = ""; 
    Random rand = new Random(); 
    Collections.shuffle(list); 
    int ques = 0; 

    while (runThrough == 0 && ques < 50) 
    { System.out.print("What's the capital of " + list.get(ques).getName() 
      + "? (STOP to quit) "); 

     if (next.equals("STOP")) 
     { 
      runThrough++; 
     } 
     else 
     { 
      if (next.equals(list.get(ques).getCapital())) 
      { 
       System.out.println("Right!"); 
       right++; 
       count++; 
      } 
      else 
      { 
       System.out.println("No, the answer is " 
        + list.get(ques).getCapital()); 
       count++; 
      } 
     } 

     ++ques; 
    } 
+0

リストから質問された質問を削除できます。生成された乱数を調整します。 –

+2

また、0から49までのランダムな順列を生成してから、必要に応じて生成順に使用することもできます。 – Gassa

+0

もう1つの方法は、すでに質問されている場合は真であるブール配列を持つことです。ここで、indexは質問のインデックスと同じです。ブール変数をチェックし、真であれば質問し、そうでない場合にはチェックします。最後に、同じアプリケーションを実行して再度生成する必要がない場合は、配列の質問をnullにすることができます。 –

答えて

0

ここでそれを行うための最も簡単な方法です。質問を繰り返すことはできないため、最大50の質問をすることができます。

Random rand = new Random(); 
Collections.shuffle(list); 

int ques = 0; 
while (runThrough == 0 && ques < 50) { 
    System.out.print("What's the capital of " + list.get(ques).getName() 
     + "? (STOP to quit) "); 

    // Your other stuff remains as is, just update 
    // list.get(ques).getCapital() 
    //   ^^ 

    ++ques; 
} 

また、import java.util.*;も必要です。

説明:質問リストをシャッフルしてから、新しい注文でこれらの質問をしてください。

+0

コンパイラはcollections.shuffleを受け入れたくありません。それは正確に何をするのですか、それをどのようにインポートしますか? –

+0

java.util。*; 'をインポートしましたか? 'shuffle'メソッドについては、[この例題](https://www.tutorialspoint.com/java/util/collections_shuffle.htm)を読んでください。 – prakharsingh95

+0

あなたが//あなたの他のものを置くときは、もしelseループを意味するのでしょうか?そして最後に++ quesを入れます。 ?私はこれを置く場所に混乱しています –

関連する問題