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