java随机生成5个数字并打印最大的

3zwjbxry  于 2021-07-03  发布在  Java
关注(0)|答案(3)|浏览(410)

这个问题在这里已经有答案了

是什么导致java.lang.arrayindexoutofboundsexception以及如何防止它(26个答案)
上个月关门了。
我试图随机生成5个数字并打印出最大的一个,生成数字是可以的,但是我在打印出最大的数字时遇到了一个错误
我的代码:

import java.util.Arrays;
import java.util.Random;

public class Project {

    public static void main(String[] args) {
        list(0, 0);
        printMax();}

    private static void list(int min, int max) {

        int[] numbers = new int[5];
        for (int i = 0; i<numbers.length; i++) {
            numbers[i] = (int)(Math.random() * 100 + 1);}

        System.out.println("Sayilar: " + Arrays.toString(numbers));
        return;}

    private static void printMax(int... numbers) {
    int result = numbers[0];

    for (int i = 1; i < numbers.length; i++) {
        if (numbers[i] > result) {
            result = numbers[i];}}

    System.out.println("\nThe largest value is " + result);
    return;}
}

我得到的结果是:

Sayilar: [5, 48, 88, 28, 68]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Project.printMax(Project.java:20)
at Project.main(Project.java:8)
qxgroojn

qxgroojn1#

你没有把任何数字传给 printMax() 方法。
这里有一个解决方案:

public static void main(String[] args) {
            int[] numbers = list();
            System.out.println(Arrays.toString(numbers));
            printMax(numbers);
        }

        private static int[] list() {
            int[] numbers = new int[5];
            for (int i = 0; i<numbers.length; i++) {
                numbers[i] = (int)(Math.random() * 100 + 1);}

            return numbers;
        }

        private static void printMax(int[] numbers) {
            int result = numbers[0];

            for (int i = 1; i < numbers.length; i++) {
                if (numbers[i] > result) {
                    result = numbers[i];
                }
            }

        System.out.println("\nThe largest value is " + result);
    }

我改变了主意 list() 函数返回它生成的数组,然后将其传递给 printMax(int[]) 接收整数数组的函数。

smdnsysy

smdnsysy2#

你的代码需要一些小改动。阅读下面的评论

import java.util.Arrays;
import java.util.Random;

public class Project {

    public static void main(String[] args) {
        // list will return an array of integers and pass that array as argument to printMax
        printMax(list(0, 0));}

    private static int[] list(int min, int max) { 
        int[] numbers = new int[5];
        for (int i = 0; i<numbers.length; i++) {
            numbers[i] = (int)(Math.random() * 100 + 1);}

        System.out.println("Sayilar: " + Arrays.toString(numbers));
        // return the numbers array
        return numbers;}
    // printMax takes an array of integers and does its logic
    private static void printMax(int [] numbers) {
    int result = numbers[0];

    for (int i = 1; i < numbers.length; i++) {
        if (numbers[i] > result) {
            result = numbers[i];}}

    System.out.println("\nThe largest value is " + result);
    return;}
}
vaqhlq81

vaqhlq813#

虽然这个问题已经有了答案,但这里有一个更简洁的方法来使用 IntStream . 这个 Random 示例应该尽可能重用。

Random random = new Random();
int[] ints = random.ints(0, 10).limit(5).toArray();

System.out.println("Random values: " + Arrays.toString(ints));

int max = 0;
for (int i : ints) {
    if (i > max) max = i;
}

System.out.println("Maximum: " + max);

相关问题