Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数组元素传递给接受ints的方法(Java)_Java_Arrays_Int_Typecasting Operator - Fatal编程技术网

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

将数组元素传递给接受ints的方法(Java),java,arrays,int,typecasting-operator,Java,Arrays,Int,Typecasting Operator,我试图创建一个数字数组,将它们传递给一个只接受int作为参数的静态方法,并将最大int返回给要打印的main(这些是家庭作业规范)。max方法本身可以工作,但我无法将我在main中输入的数组传递给函数,并返回max值。感谢您的帮助 import java.util.Scanner; public class findMax { public static int max(int val1, int val2, int val3) { int[] intArray = n

我试图创建一个数字数组,将它们传递给一个只接受int作为参数的静态方法,并将最大int返回给要打印的main(这些是家庭作业规范)。max方法本身可以工作,但我无法将我在main中输入的数组传递给函数,并返回max值。感谢您的帮助

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();
}
import java.util.Scanner;
公共类findMax{
公共静态int max(int val1、int val2、int val3){
int[]intArray=新的int[3];
val1=intArray[0];
val2=intArray[1];
val3=intArray[2];
int max=Math.max(Math.max(val1,val2,val3);
系统输出打印项次(最大值);
返回最大值;
}
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int[]intArray=新的int[3];
System.out.println(“输入3个整数:”);
for(int i=0;i0){
某人加上(“,”);
}
某人追加(在列[i]);
}
System.out.println(“输入值:+sb.toString());
max(intArray[0],intArray[1],intArray[2]);
System.out.println(最大值(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;
}
然后,您的
main
方法应该按预期工作(但您不需要像那样调用
max
两次,只需在打印时调用一次)

您可能更喜欢
数组.toString(intArray)
在当前的
上进行
循环

或者,您可以使
max
可变(并且假设您使用的是Java8+,使用
IntStream
)。像

可以称之为

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

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

我显然是想得太多了。非常感谢你的帮助。
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));