[英]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.