2016-07-22 68 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