有 Java 编程相关的问题?

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

java如何查找数组中的最大数

我有一个等级数组(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;
}

我有另一个数组,它是一个字符串数组,包含学生的名字,我有return null,因为它说它需要一个return语句,但是我不打算它被null。是什么导致它返回null而不是highstudent
我使用了精确的代码来查找最低等级,它工作得很好。我对这个代码所做的唯一一件事就是将if语句从highest > g[i]更改为highest < g[i]


共 (2) 个答案

  1. # 1 楼答案

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

    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];
    }
    
  2. # 2 楼答案

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

    原始测试用例:

    {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处的索引

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

    您可以尝试以下方法:

    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:Improve代码根据mureinik的回答,我还有一个变量可以帮助您轻松理解