简体   繁体   English

用户输入二维数组,Java

[英]User Input 2d Array, Java

How do I make this char answer [][] given input in the code change to user input instead ?我如何使这个字符答案 [][] 给定代码中的输入改为用户输入? sample input is when I enter 9 , I will enter 9 student answer.示例输入是当我输入 9 时,我将输入 9 学生答案。 the answer column contains 10 answer in character.答案列包含 10 个字符的答案。 The sample output is at the bottom below the code.示例输出位于代码下方的底部。

input:
    9
    DBDCCDAEAD
    ABACCDEEAD
    DBABCAEEAD
    EDDACBEEAD
    CBAEDCEEAD
    ABDCCDEEAD
    BBECCDEEAD
    BBACCDEEAD
    EBECCDEEAD
    DBDCCDEEAD


      public class Q3 {
            public static void main (String[] args) {
                   char answer[][] =
                       {
                               {'A','B','A','C','C','D','E','E','A','D'},
                               {'D','B','A','B','C','A','E','E','A','D'},
                               {'E','D','D','A','C','B','E','E','A','D'},
                               {'C','B','A','E','D','C','E','E','A','D'},
                               {'A','B','D','C','C','D','E','E','A','D'},
                               {'B','B','E','C','C','D','E','E','A','D'},
                               {'B','B','A','C','C','D','E','E','A','D'},
                               {'E','B','E','C','C','D','E','E','A','D'}
                       };
                      
                       char keys[] = {'D','B','D','C','C','D','A','E','A','D'};
                       double[] student = new double[answer.length];
                       for(int i = 0; i < answer.length; ++i)
                       {
                           double right = 0;
                           double wrong = 0;
                           double w =0;
                           for(int j = 0; j < answer[i].length; ++j)
                           {
                               if(answer[i][j] == keys[j]) {
                                   ++right; }  
                               if(answer[i][j] != keys[j]) {
                                   ++wrong;
                                   w = wrong - (wrong * 0.25);
                                   
                               } 
                           }
                          
                           student[i] = right + w ;   // right  - wrong
                       }
        
                       for(int i = 0; i < student.length; ++i)
                           System.out.println("student"+(i+1)+ " " + student[i]);
                     }
                     }

output:
Student 1: 6.25
Student 2: 5.00
Student 3: 3.75
Student 4: 2.50
Student 5: 7.50
Student 6: 6.25
Student 7: 6.25
Student 8: 6.25
Student 9: 8.75

You only have 8 rows in your answer array.您的答案数组中只有 8 行。 Assuming the first row is the key and the rest are answers, fill in the arrays as follows to avoid errors.假设第一行是key,剩下的都是答案,请按如下方式填写数组以避免错误。

String[] s = { "DBDCCDAEAD", "ABACCDEEAD", "DBABCAEEAD",
        "EDDACBEEAD", "CBAEDCEEAD", "ABDCCDEEAD",
        "BBECCDEEAD", "BBACCDEEAD", "EBECCDEEAD",
        "DBDCCDEEAD" };
// compute the key
char[] keys = s[0].toCharArray();

// fill in the answers
char answer[][] = new char[s.length-1][];
for(int i = 1; i < s.length; i++) {
      answer[i-1] = s[i].toCharArray();
}

I would also make the following changes.我还将进行以下更改。

for (int j = 0; j < answer[i].length; j++) {
    if (answer[i][j] == keys[j]) {
        ++right;        // <- if it isn't right, it must wrong.
    } else {
        ++wrong;
        w = wrong - (wrong * 0.25);  // Move this outside the inner loop
                                     // since you only use the last value of
                                     // wrong
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM