2017-02-11 12 views
1

すべての正解を入力しても私のカウンタが異なる値を出力し続ける理由を理解するのに問題があります。私は考えることができるすべてを試して、研究していますが、まだ運がありません。助けてください、これは私がこの「シンプルな」プログラムに取り組んでいる14時間です。2つの配列を比較してカウンタを増やす

import java.util.Scanner; //import scanner 

public class DriverTestBlah { 
public static void main(String [] args){ 

Scanner input = new Scanner(System.in); 
    char[] correctAnswers = {'A','D','C','A','A','D','B', 
    'A','C','A','D','C','B','A','B'}; 
    char singleAnswer = ' '; 
    int number_Correct = 0; 
     for(int i = 0; i < 15; i++) //print question numbers/takes user input 
      { 
     System.out.println("Question " + (i + 1) + ":"); 
     singleAnswer = input.nextLine().charAt(0); 
      }//end of for loop 

    System.out.println("number correct: " + 
     total_correct_answers(correctAnswers, singleAnswer)); 
    }//end of main 

    public static int total_correct_answers(char []correctAnswers,char singleAnswer){ 
     int number_correct = 0; 

     for (int i = 0; i < 15; i++){ 
     if(correctAnswers[i] == singleAnswer){ 
      number_correct++;} 

     }//end of for loop 
    return number_correct; 
    }//end of correct method 
    }//end of class 
+0

プログラムが何をしているのかを追加して、予想される出力と結果を表示する必要があります。 – TDG

答えて

0

あなたのプログラムが誤った値を示した理由は、ユーザによって与えられた最後の値だけ/答えsingleAnswer変数店です。

私は与えられたすべての答えを格納するために配列userAnswerを作成しました。あなたは、配列correctAnswersおよびユーザーの回答で正しい答えを持っているすべての質問については

public class DriverTestBlah { 
    public static void main(String [] args){ 

    Scanner input = new Scanner(System.in); 
    char[] correctAnswers = {'A','D','C','A','A','D','B', 
    'A','C','A','D','C','B','A','B'}; 
    char[] userAnswer = new char[correctAnswers.length]; 

    for(int i = 0; i < 15; i++) //print question numbers/takes user input 
    { 
     System.out.println("Question " + (i + 1) + ":"); 
     userAnswer [i] = input.nextLine().charAt(0); 
    }//end of for loop 

    System.out.println("number correct: " + total_correct_answers(correctAnswers, userAnswer)); 

    input.close(); 
    }//end of main 

    public static int total_correct_answers(char []correctAnswers,char [] userAnswer) { 
    int number_correct = 0; 

    for (int i = 0; i < 15; i++){ 
     if(correctAnswers[i] == userAnswer[i]){ 
      number_correct++; 
     } 
    }//end of for loop 
    return number_correct; 
    }//end of correct method 
}//end of class 
+0

ありがとうございました、これは私のためにどれほどストレスが多いのか分かりません。私は実際に私が間違っていたことを理解しています:) –

+0

@charleypoppあなたは歓迎です – Bhushan

0

はこれを試してみてください?このモードでは、でsingleAnswerというユーザーの最後の回答のみを保存し、すべての回答に対してチェックします。

char[] singleAnswer=new char[15]; 

、結果の配列に追加します:

singleAnswer[i]=input.nextLine().chatAt(0); 

結果がこれで正しいかどうかを確認することができた後、あなたがそのようなsingleAnswerのcharの配列を作成することができ、この問題を解決するために forループの命令:

if(singleAnswer[i]==correctAnswers[i]) number_correct++; 
関連する問題