用户输入2d数组,Java



如何使这个char答案[][]在代码中给定的输入更改为用户输入?样本输入是当我输入9时,我将输入9个学生的答案。答案栏包含10个答案。示例输出位于代码下方。

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

您的答案数组中只有8行。假设第一行是键,其余行是答案,请按如下方式填写数组以避免错误。

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();
}

我还将做以下更改:

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
}
}

最新更新