如何找到数组中

时间:2018-04-04 17:46:21

标签: java arrays max

我有一系列成绩(g),这是一个int[],我试图找到该数组中最大的成绩。我试过这个:

public static String highestGradeName(int[] g, String[] n) {
    String highStudent;
    int highest = g[0];
    for (int i=1; i < g.length; i++) {
        if (highest < g[i]) {
            highStudent = n[i+1];
            return (highStudent);
        }
    }
    return null;
}

我有另一个数组,它是一个String数组并包含学生的名字,我有return null因为它说它需要一个return语句但是我没有计划它是{ {1}}。导致它返回null而不是null的原因是什么? 我使用了确切的代码来查找最低等级,并且它完好无损我唯一能做的就是将highstudent中的if语句更改为highest > g[i]

2 个答案:

答案 0 :(得分:3)

从循环内部返回是错误的,因为稍后在数组中总是可以有更大的数字。您应该保留最高等级的索引,并在最后返回相应的名称:

public static String highestGradeName(int[] g, String[] n) {
    int highest = 0;
    for (int i = 1; i < g.length; i++) {
        if (g[highest] < g[i]) {
            highest = i;
        }
    }
    return n[highest];
}

答案 1 :(得分:0)

根据你的逻辑,让我们打破局面。

原始测试用例:

{0,1,2}作为整数数组。 将{"arya", "jon", "tyrion"}作为字符串数组。

highest = 0; // according to your code.

For int i = 1, i < 3; i++
0 < 1
highstudent = 2 // tyrion
// returns tyrion

你得到null的原因是你的0整数索引应该大于或等于1的索引。

现在,当您在方法中使用类型String时。你应该返回一个字符串,这就是你的编辑所说的有回报的东西。你应该使用循环返回,因为你需要找到最高的学生,这只有在循环所有列表后才可能。

你可以试试这个:

public static String highestGradeName(int[] g, String[] n) {

    int max = 0; 
    int index = 0;
    for (int i = 0; i < g.length; i++) {
        if (max < g[i]) {
            max = g[i];
            index = i;
        }
    }
    return n[index];

}

PS:根据mureinik的回答改编代码,我还有一个变量可以帮助您轻松理解。