java 我的最大值wont显示,但我不能看到或弄清楚为什么

slsn1g29  于 2023-03-28  发布在  Java
关注(0)|答案(1)|浏览(110)

我试图找到一个用户从一个一维数组输入的最大值,但我设置的函数不会显示一个值。我通常使用Visual Basic,做过有限的Java,所以我是新来的。

public static void main(String[] args) {
        
        Scanner scan = new Scanner(System.in);
        
        int i = 0;
        int data[];
        data = new int[5];
        
        for (i = 0; i <5; i ++) {
        
        System.out.println("Please enter your " + (i + 1)+ " number");
        data[i] = scan.nextInt();

    }
        
        System.out.println(data[0] + data[1] + data[2] + data[3] + data[4]);
    
    int max = findMax(data);
    System.out.println(max);
public static int findMax(int data[]){
        
        int max = data[0];
        int element = 1;
        
        while (element != 5); {
            
            if (data[element] > max) {
                max = data[element];
            }
        
        }
        
        
        System.out.println(max);
        return max;
        
        }

我会期待一个最大值,但没有显示在所有,但程序还没有终止。

x4shl7ld

x4shl7ld1#

while (element != 5);导致无限循环。首先,删除它后面的;,因为这会使循环体成为空语句。接下来,请注意,element在初始化为1后从未更改,因此循环条件element != 5始终为true。
如果你想使用element作为遍历数组的索引,你应该在循环块的末尾增加它,以便处理下一个元素。

while (element != 5) {
    if (data[element] > max) {
        max = data[element];
    }
    ++element;
}

请注意,最好与data.length进行比较,而不是硬编码值5
或者,更好的是,使用增强的for循环来避免在不需要索引时自己处理索引:

for (int num : data) max = Math.max(max, num);

另一种带流的解决方案:

return Arrays.stream(data).max().orElse(Integer.MIN_VALUE);

相关问题