繁体   English   中英

将数组的元素传递给接受int的方法(Java)

[英]Passing elements of array to method that accepts ints (Java)

我正在尝试创建一个数字数组,将它们传递给仅接受int作为参数的静态方法,然后将最大int返回给要打印的main(这些是作业规范)。 max方法可以单独使用,但无法将在main中输入的数组传递给函数,也无法将最大值返回。 任何帮助表示赞赏。

import java.util.Scanner;

public class findMax {
    public static int max(int val1, int val2, int val3) {
        int[] intArray = new int[3];
        val1 = intArray[0];
        val2 = intArray[1];
        val3 = intArray[2];
        int max = Math.max(Math.max(val1, val2), val3);
        System.out.println(max);
        return max;
    }

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int[] intArray = new int[3];
    System.out.println("Enter 3 integers: ");
    for (int i = 0; i < intArray.length; i++) {
        intArray[i] = sc.nextInt();
    }
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < intArray.length; i++) {
        if (i > 0) {
            sb.append(", ");
        }
        sb.append(intArray[i]);
    }
    System.out.println("Input values: " + sb.toString());
    max(intArray[0], intArray[1], intArray[2]);
    System.out.println(max(intArray[0], intArray[1], intArray[2]));
    sc.close();
}

}

您的max方法会使用零覆盖其参数,因此不,它无法单独运行。

public static int max(int val1, int val2, int val3) {
    int[] intArray = new int[3]; // {0, 0, 0}
    val1 = intArray[0]; // <-- val1 = 0
    val2 = intArray[1]; // <-- val2 = 0
    val3 = intArray[2]; // <-- val3 = 0
    int max = Math.max(Math.max(val1, val2), val3);
    System.out.println(max);
    return max;
}

应该是这样的

public static int max(int val1, int val2, int val3) {
    return Math.max(Math.max(val1, val2), val3);
}

然后,您的main方法应该可以按预期工作(但是您不需要像这样调用max两次,而在打印时只需调用一次)。

// max(intArray[0], intArray[1], intArray[2]);
System.out.println(max(intArray[0], intArray[1], intArray[2]));

并且您可能更喜欢Arrays.toString(intArray); 超过您当前的for循环。

或者,您可以设置max可变参数(并假设您使用的是Java 8+,请使用IntStream )。 喜欢,

public static int max(int... values) {
    return IntStream.of(values).max().orElse(-1);
}

可以这样称呼

System.out.println(max(intArray));

要么

System.out.println(max(1, 2, 3, 4, 5));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM