从外部文件读取二维阵列

普里扬舒

这是我的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
戴维斯

此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循环中对if进行更改,您现在可以在每次循环执行时检查键中的下一个答案,而不仅仅是在上一个问题的答案正确的情况下。

我不能保证这会成功,因为您输入的注释中没有换行符,因此我无法验证其是否获得正确的结果。

我希望这有帮助!

编辑:我做了另一个更改。我更改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

我认为这工作正常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章