2016-02-02 75 views
0

我需要找到一種方法來獲取用戶t/f答案到數組中,以便可以根據密鑰對它們進行檢查。我現在正在得到一個永無止境的循環。我不知道我該如何避免這種情況。獲取2維數組的用戶字符輸入

public class TrueFalse { 

    public static void main(String[] args) { 

     DecimalFormat mine = new DecimalFormat("##0.0"); 
     Scanner input = new Scanner(System.in); 

     //Creates an array to store student answers 
     char [][] studentAnswers = new char[8][11]; 
     System.out.println(" please enter T/F"); 
     for (int h = 0; h < studentAnswers[h].length; h++){ 
      for (int k = 0; k < studentAnswers.length; k++){ 
       studentAnswers[k][h] = input.next().charAt(0); 
      } 
     } 

     //Answer Key that will be compared to student answers 
     char [] keys = {'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'F', 'F'}; 


     //Grading the user answers 
     for (int i = 0; i < studentAnswers.length; i++){ 
      //Grade for one student 
      int score = 0; 
      for (int j = 0; j < studentAnswers[i].length; j++){ 
       if(studentAnswers[i][j] == keys[j]) 
       ++score; 
      } 

      double average = (double)score/studentAnswers.length * 100; 

      System.out.println("Student number " + i + " score was: " + mine.format(average)); 

     } 

    } 
} 
+1

您的代碼看起來不錯迄今。你想怎麼做這個比較,你想要什麼樣的輸出? –

+0

我需要確保我可以從用戶那裏獲得t/f輸入,並將它們與密鑰進行比較,以便我可以獲取正確答案並輸出平均值。 – CamronT

+0

我的代碼的其餘部分在這裏:{for(int i = 0; i CamronT

回答

0

您可以嘗試使用下面的代碼來打印你的場均數據:

for (int i=0; i < studentAnswers[i].length; ++i) { 
    int score = 0; 
    for (int j=0; j < studentAnswers.length; ++j) { 
     if (studentAnswers[j][i] == keys[j]) { 
      ++score; 
     } 
    } 

    DecimalFormat df = new DecimalFormat(".##"); 
    double average = (double)score/studentAnswers.length; 
    System.out.println("Student number " + i + " score was: " + df.format(average)); 
} 
+0

問題更多的是讓我的for循環沒有結束。我設定參數的原因是爲了避免發生這種情況。我需要能夠輸入至少8個學生的答案才能與密鑰相對。我不知道該從哪裏走,儘管 – CamronT

+0

我運行了整個代碼(你的OP與這個答案一起),它似乎在工作。 –

+0

我的完整代碼現在已經啓動,我不完全確定與你的代碼和我的代碼有什麼不同,但我甚至沒有超過原來的循環 – CamronT