2016-04-03 23 views
1

文字配列が10個の質問の正解で埋め込まれたプログラムを作成することになりました。私はユーザーの答えでいっぱいだった配列を作って、テストの答えでユーザーの回答をチェックし、ユーザーの入力を受けて合格または不合格の出力を出すことになっていました。コードはコンパイルされ、10文字で入力することができますが、入力する文字にかかわらず、出力は常に10個の答えが10個で間違っていました。文字配列が正しく入力されていない

これを理解しようと数時間困惑していますここでいくつかの助けを望んでいた。ここで

は、コードスニペットです:

 //Part 2 
    char[] correctAnswers = {'b', 'd', 'a', 'a', 'c', 'a', 'b', 'a', 'c', 'd'}; //Char arrays 
    char[] studentAnswers = new char[10]; 

    System.out.println("What are the students 10 answers?"); //Getting student answers 

    for (int i = 0; i < correctAnswers.length; i++) 
     studentAnswers = scan.next().toCharArray(); 

    int points = 0; //Used to calculate pass or fail 

    for (int i = 0; i < correctAnswers.length; i++); 

    int j = 0; //Used to identify each element in the array 

    if (correctAnswers[j] == studentAnswers[j]) //Checks each answer with the correct answers and adds 1 point if it is true 
    { 
     points++; 
     j++; 
    } 
    else { 
     j++; 
    } 

    if (points >= 8) { 
     System.out.println("Congratulations! \nYou have passed exam."); 
     System.out.println("Total number of correct answers: " + points); //print points 
     System.out.println("Total number of incorrect answers: " + (correctAnswers.length - points)); //10 - points would equal the remaining amount of points available which would be how many were missed. 
    } else { 
     System.out.println("Sorry, you have not passed the exam!"); 
     System.out.println("Total number of correct answers: " + points); 
     System.out.println("Total number of incorrect answers: " + (correctAnswers.length - points)); 
    } 

答えて

0
for(int i = 0; i < correctAnswers.length; i++) 
    studentAnswers = scan.next().toCharArray(); 
  1. 私はあなたが最初の行を削除するべきだと思います。それは2回現れます。あなたは1つの文字列としてすべての10の答えを読むと仮定します。

  2. そしてiどこでも代わりのjを使用し、それが(空になるelseがあまりにも削除することができるので、jj++の宣言を削除)不必要です。

  3. さらに、forの後に出力の前に(つまり合計点を確認する前に)中括弧{}を配置する必要があります。 forの後ろにセミコロン;を置くと、x回何もしません。 iが定義されていなかったので:あなたはjを使用し、なぜ私が見る

。それはループ(空のスキップまたは「何もしない」コマンド:孤独なセミコロンからなる)でのみ存続します。 {}(3.を参照)を追加すると、iはそれらの中かっこの間に存在します。

+0

これは意味がありますが、出力の範囲外の配列を取得しようとしています。 – Tyler

+0

@Tylerあなたが10文字以下または10文字以上を入力した場合にのみ、私は推測します。 – maraca

+0

配列のサイズである正確に10を入力し、そのエラーが発生します。私は非常に私はそれを遭遇したことがないこのエラーを修正するために混乱している。 – Tyler

関連する問題