使用预定义的java方法查找数组中的最大数

iq3niunx  于 2021-07-08  发布在  Java
关注(0)|答案(4)|浏览(347)

下面是我正在处理的代码片段,我的目标是使用预定义的java方法从列表中找到最大的值。

import java.util.*;

public class Test {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter a list of integers: ");
        int array[] = new int[10];

        for (int i = 0; i < array.length; i++) {
            array[i] = s.nextInt();
        }

        for (int j = 0; j < array.length; j++) {
            if (j < array.length) {
                int maximum = Math.max(array[j], array[j + 1]);
            }
        }

        System.out.println("Largest number of the list: " + maximum);
    }
}

我得到的错误如下:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
        maximum cannot be resolved to a variable

我希望有人能帮我解决这个问题。

tcomlyy6

tcomlyy61#

你可以用 IntStream.max() 方法来查找流的最大元素 int 基本体:

int[] arr = {4, 7, 5, 3, 2, 9, 2, 7, 6, 7};

int max = Arrays.stream(arr).max().getAsInt();

System.out.println(max); // 9

你可以用 Stream.max(Comparator) 方法来查找流的最大元素 Integer 物体:

List<Integer> list =
        Arrays.asList(6, 10, 2, 1, 6, 4, 5, 8, 9, 8);

Integer max2 = list.stream()
        .max(Comparator.comparingInt(Integer::intValue))
        .get();

System.out.println(max2); // 10

另请参见:
•如何在二维数组中找到前5个最大值?
•java中的数组选择排序

xlpyo6sf

xlpyo6sf2#

如上所述,注意变量范围:

public class Test {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter a list of integers: ");

        int array[] = new int[10];
        for (int i = 0; i < array.length; i++) {
            array[i] = s.nextInt();
        }

        int maximum = 0;
        for (int j = 0; j < array.length - 1; j++) {
            maximum = Math.max(array[j], array[j + 1]);
        }

        System.out.println("Largest number of the list: " + maximum);
    }
}
hpcdzsge

hpcdzsge3#

您可以迭代数字数组并跟踪所看到的最大值:

int largest = Integer.MIN_VALUE;

for (int j=0; j < array.length; j++) {
    if (array[j] > largest) {
        largest = array[j];
    }
}

注意:上面的代码段假设输入数组中至少有一个数字。

vngu2lb8

vngu2lb84#

在for循环块内定义最大变量,使其成为局部变量,然后尝试在其定义块外访问该变量的值,这就是为什么java找不到这样的变量,因为它在该范围内不存在。试试这个:

public class Test {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter a list of integers: ");
        int array[] = new int[10];
        int maximum = 0;
        for (int i = 0; i < array.length; i++) {
            array[i] = s.nextInt();
        }

        for (int j = 0; j < array.length; j++) {
            if (j < array.length) {
                maximum = Math.max(array[j], array[j + 1]);
            }
        }

        System.out.println("Largest number of the list: " + maximum);
    }
}

请尝试阅读此链接以获取有关作用域和变量的进一步解释。

相关问题