我是初学者,求解释一下判断最值是否有相同的方法为什么不起作用;代码写的有点费,勿喷


package test;

import java.util.Scanner;

public class Test7 {
    //判断最大值是否有相同
     public static int average_max(String[][] a, Float[] b, int max) {
         int x = -1;
         for(int k = 0; k < a.length; k++) {
                for(int y = 0; y < a[k].length; y++) {
                    for(int j = 0 ; j < b.length; j++) {
                        if((b[j] == b[max]) && (a[j][1] != a[max][1])) {
                             x = j;
                        }
                    }
                }
            }
        return x;
     }
    //判断最小值是否有相同
     public static int average_min(String[][] a, Float[] b, int min) {
         int m = -1;
         for(int k = 0; k < a.length; k++) {
                for(int y = 0; y < a[k].length; y++) {
                    for(int j = 0 ; j < b.length; j++) {
                        if((b[j] == b[min]) && (a[j][1] != a[min][1])) {
                             m = j;
                        }
                    }
                }
            }
        return m;
     }
    @SuppressWarnings("resource")
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int i = 0, l = 1, id = 0, min = 0, max = 0, x = 0, m = 0;
        float Ending = 0, Math = 0, C = 0, average = 0;
        String name = null;
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入学生人数:");
        int n = sc.nextInt();
        String[][] a = new String[n][6];
        Float[] b = new Float[n];
        while(i < n) {
            System.out.print("请输入第" + l +"位学生姓名:");
            name = sc.next();
            System.out.print("请输入第" + l +"位学生id:");
            id = sc.nextInt();
            System.out.print("请输入第" + l +"位学生英语成绩:");
            Ending = sc.nextFloat();
            System.out.print("请输入第" + l +"位学生数学成绩:");
            Math = sc.nextFloat();
            System.out.print("请输入第" + l +"位学生C++成绩:");
            C = sc.nextFloat();
            average = (Ending + Math + C) / 3; 
            for(int j = 0; j < a[i].length; j++) {
                a[i][0] = name;
                a[i][1] = Integer.toString(id);
                a[i][2] = Float.toString(Ending);
                a[i][3] = Float.toString(Math);
                a[i][4] = Float.toString(C);
                a[i][5] = Float.toString(average);
                b[i] = average;
                }
            i++;
            l++;
        }
        for(int j = 0 ; j < b.length; j++) {
            if(b[j] > b[max]) {
                max = j;
            }else if(b[j] < b[min]){
                min = j;
            }
        }
        x = Test7.average_max(a, b, max);
        m = Test7.average_min(a, b, min);
        System.out.print("平均成绩最大的学生为:");
        for(int j = 0; j < a[max].length; j++) {
            System.out.print(a[max][j] + " ");
        }
        System.out.println();
        if(x != -1) {
            System.out.print("平均成绩最大的学生为:");
            for(int j = 0; j < a[x].length; j++) {
                System.out.print(a[x][j] + " ");
            }
            System.out.println();
        }
        System.out.print("平均成绩最小的学生为:");
        for(int j = 0; j < a[min].length; j++) {
            System.out.print(a[min][j] + " ");
        }
        System.out.println();
        if(m != -1) {
            System.out.print("平均成绩最小的学生为:");
            for(int j = 0; j < a[m].length; j++) {
                System.out.print(a[m][j] + " ");
            }
            System.out.println();
        }
    }
}

img

字符串判断是否相等,要用equals()函数。
二维数组a是字符串二维数组,判断的地方用equals()函数,不相等判断取反就行。
如:判断str1不等于str2

!str1.equals(str2)