Java随机生成5个数字并打印最大值

Java随机生成5个数字并打印最大值,java,arrays,random,Java,Arrays,Random,我尝试随机生成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 mi

我尝试随机生成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;}
}

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

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;}
}
导入java.util.array;
导入java.util.Random;
公共类项目{
公共静态void main(字符串[]args){
//列表将返回一个整数数组,并将该数组作为参数传递给printMax
printMax(列表(0,0));}
私有静态int[]列表(int最小值,int最大值){
int[]数字=新的int[5];
for(int i=0;i结果){
结果=数字[i];}
System.out.println(“\n最大值为“+结果”);
返回;}
}

您没有将任何数字传递到
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);
    }
publicstaticvoidmain(字符串[]args){
int[]数字=列表();
System.out.println(Arrays.toString(numbers));
printMax(数字);
}
私有静态int[]列表(){
int[]数字=新的int[5];
for(int i=0;i结果){
结果=数字[i];
}
}
System.out.println(“\n最大值为“+结果”);
}

我已经更改了
list()
函数以返回它生成的数组,然后将其传递给
printMax(int[])
函数,该函数接收一个int数组。

尽管这个问题已经有了答案,但这里有一个更简洁的方法来使用
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);

您需要将某些内容传递给您的
printMax
方法。当我将某些内容发送给printMax时,我会打印出我正在发送的样本;printmax(0);-->最大值为0@AomineDaici但是您目前没有将任何内容传递给
printMax
方法。1) 让您的
list
方法返回
numbers
,然后2)将此数组传递给
printMax
。将
printMax
的方法声明更改为
private static void printMax(int[]numbers)
,您的IDE可能会告诉您出了什么问题。Varargs(
int..
)也将接受空输入。另外,请参见.code>random.int(from,to).limit(5).toArray()
(使用
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);