有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

循环/相等的java问题==

我有下面的代码,我有一些困难。我对输出的期望应该是申请人#及其相关的考试分数。两个数组的第一个位置都是应答键。我不太确定我在这方面出了什么问题,但如果有任何帮助,我们将不胜感激

public class applicantCheck
{
//* main method
public static void main(String[] args)
{
int i = 0, j = 0, correct;
//* initialization of applicant id's and answers
int[] appID = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
char[][] appAnswers = { {'N','Y','N','N','Y','N','N','Y','N','Y'},
{'N','Y','Y','N','Y','N','Y','Y','N','Y'},
{'N','Y','N','Y','N','Y','Y','Y','N','N'},
{'N','Y','Y','N','Y','Y','Y','Y','Y','Y'},
{'Y','Y','N','N','Y','N','N','Y','Y','Y'},
{'Y','Y','N','Y','Y','Y','N','N','T','N'},
{'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'},
{'N','Y','N','N','N','Y','N','Y','N','Y'},
{'Y','N','Y','N','Y','N','Y','N','Y','N'},
{'Y','Y','Y','N','N','Y','Y','N','Y','N'},
{'N','N','N','N','N','N','N','N','N','N'},
{'Y','N','Y','Y','N','Y','Y','N','Y','N'},
{'N','Y','N','N','Y','Y','N','N','N','Y'},
{'N','Y','N','Y','N','Y','N','Y','N','Y'},
{'Y','N','Y','N','Y','Y','N','Y','N','Y'} };
System.out.println("Applicant #\t\tMark (out of " + appAnswers[i].length + ")");
for (i = 1; i < appID.length; i++)
{
    System.out.printf("%-9d", appID[i]);
    correct = 0;
    for (j = 0; j <= i; j++)
    {
        if (appAnswers[0][j] == appAnswers[i][j])
        {
            correct++;
        }
    }
    System.out.printf("%10d\n", correct);
} // end of for loop
System.out.println();
} // end of main
} // end of file

输出为:

--------------------Configuration: <Default>--------------------
Applicant #     Mark (out of 10)
1                 2
2                 3
3                 3
4                 4
5                 3
6                 2
7                 6
8                 3
9                 2
10       Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
    at applicantCheck.main(applicantCheck.java:36)

共 (3) 个答案

  1. # 1 楼答案

    而不是

    for (j = 0; j <= i; j++)
    

    试试看

    for (j = 0; j < 10; j++)
    

    因为数组的长度总是相同的

  2. # 2 楼答案

    我还没有确认这是否是问题,但这是一个危险信号:

    for (j = 0; j <= i; j++)
    

    你是说这个吗

    for (j = 0; j < 10; j++)
    

    你每排只有10个。但是i上升到14左右。因此j将出界

  3. # 3 楼答案

    我不想为你解决这个问题,因为这是家庭作业,但这里有一个提示

    数组索引从0到元素数-1。检查你的循环,确保它没有超过末端