2016-07-22 48 views
0

這是我的java代碼,用於比較MCQ答案和主函數中的答案關鍵字,學生的答案存儲在外部.txt文件中。它確實顯示了一個輸出,但它不是正確的。下面是我的代碼從外部文件讀取二維數組

public static void main(String[] args) 
{ 
    char [] answer = new char[152]; 
    //char[] answer = new char[10]; 
     char[] keys = {'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D'}; 

    int c = 0; 
    try{ 

    Scanner data = new Scanner(new File("students1.txt")); 
    while(data.hasNextchar()) 
    { 
     String s = data.nextLine(); 
     int count = 0; 
     for(int i = 0; i< s.length(); i+=2) { 
      if(s.charAt(i) == keys[count]) 
      count++; 

     } 

     System.out.println("Student " +c + "'s correct count is " + count); 
     c++; 

    } 
    } 
    catch(Exception e){ 
    System.out.println(e); 
    } 


    In the Output Window it should show 
    Student 1's correct count is 7 
    Student 2's correct count is 7 
    Student 3's correct count is 7 
    Student 4's correct count is 6 
    Student 5's correct count is 5 
    Student 6's correct count is 4 
    Student 7's correct count is 8 
    Student 8's correct count is 7 
+0

什麼是「正確的」?請編輯您的問題,包括文件 –

+0

秒一個是正確的」 – Priyanshu

+0

提供的文件格式的.txt –

回答

0

for循環(編輯:可能)是罪魁禍首:

int count = 0; 
for(int i = 0; i< s.length(); i+=2) { 
    if(s.charAt(i) == keys[count]) 
     count++; 
    } 
} 

因爲你正在檢查在keys[count]在計數了接聽鍵,你僅僅看到的右側部分當他們把每個問題都解決了的時候,答案的關鍵。

而是嘗試類似:

if (s.charAt(i) == keys[i/2]) { 
    count++; 
} 

與該改變的,如果裏面的for循環,你現在正在檢查,而不是僅在回答循環執行的關鍵,每次在未來的答案,前面的問題是正確的。

我不能保證這會工作,因爲與輸入您的評論並沒有在它的新行,所以我無法驗證,如果它得到正確的結果。

我希望這有助於!

編輯:我做了另一個改變。我改變data.hasNextchar()data.hasNextLine()這裏是一個示例文本輸入文件和輸出

char[] keys = {'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D'}; 

students1.txt

D A D C C D A E A D 
D A D D A D A E A D 
D A D C C D A B A D 
D A D D D D E C A D 

if語句:

if(s.charAt(i) == keys[i/2]) 
    count++; 

輸出:

Student 0's correct count is 9 
Student 1's correct count is 7 
Student 2's correct count is 8 
Student 3's correct count is 5 

我認爲這是正常工作。

+0

它的工作原理部分10字母答案80個字母,但它表明了我結果11名學生而不是8名,其中3名學生的分數僅爲0 – Priyanshu

+0

好的 - 我很抱歉,它只能部分工作。你可以編輯你的原始問題以包含換行符的文本嗎?我可能很容易找出這種錯誤。 – Davis

+0

我不知道如何上傳文本文件在這裏評論。請你指導我。我在這裏很新 – Priyanshu