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

标签 java arrays int typecasting-operator

我正在尝试创建一个数字数组,将它们传递给一个仅接受整数作为参数的静态方法,并将最大整数返回到要打印的 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));

关于java - 将数组元素传递给接受整数的方法 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45249582/

相关文章:

c - 在c中打印二维数组

Java Reflection - 获取数组对象的大小

c - 逐行读取文件,将整数存储在数组中

java - 使用 System.arraycopy(...) 比使用 for 循环复制数组更好吗?

java - 带蓝图的 Camel 代理

Java Swing GUI 随机关闭

php - 使用 INSERT 将整数值插入 mysql int

java - 使用 Spring MongoTemplate 在 mongo 中插入数据时获取 java.lang.NoSuchMethodError : org. springframework.cglib.core.ReflectUtils.defineClass

c - 为什么二维数组总是在 C 中打印出 0?

C代码int到字符串不起作用