Java中如何通过方法返回最大数组的长度值 代码片段位于一个单独的类中。

Java中如何通过方法返回最大数组的长度值 代码片段位于一个单独的类中。,java,arrays,oop,intellij-idea,methods,Java,Arrays,Oop,Intellij Idea,Methods,有两个数组。第一个是5号,第二个是8号 double[] x = new double[5]; double[] y = new double[8]; 我需要编写一个方法来比较两个数组的长度(x,y),并返回最大数组的长度(y) 我试过了,但是IntelliJ IDEA显示了一个语法错误 // version 1 private int getLargeArray( double[] x, double[] y ) { boolean checkLargeArray = x.leng

有两个数组。第一个是5号,第二个是8号

double[] x = new double[5];
double[] y = new double[8];
我需要编写一个方法来比较两个数组的长度(x,y),并返回最大数组的长度(y

我试过了,但是IntelliJ IDEA显示了一个语法错误

// version 1
private int getLargeArray( double[] x, double[] y ) {

    boolean checkLargeArray = x.length < y.length;
    int result;

    if( checkLargeArray == true ) {
        result = y.length; // 'result' is ignored
    } else if( checkLargeArray == false ) {
        result = x.length; // 'result' is ignored
    }

    return result; // uninitialized variable
}
//版本1
private int getLargeArray(双[]x,双[]y){
布尔checkLargeArray=x.length
Java没有看到变量'result',该变量位于'if'中,因此它不会返回该变量。如果我在方法开始中为变量'result'写入0,它将返回0,并忽略'If'

第二个版本也不起作用。 正如我所知,Java不支持返回,返回是在if、else和for块中

//版本2
private int getLargeArray(双[]x,双[]y){
布尔checkLargeArray=x.length

IntelliJ IDEA屏幕截图


必须在开始时初始化变量结果,因为使用代码可能无法初始化变量结果。比如:
int结果=0

这样,您的第一个代码块就可以工作了。

您可以这样编写:

if(x.length < y.length) {
    return y.length;
}
else {
   return x.length;
}
if(x.length
要使代码正常工作,只需执行IDE要求的操作。在第一种情况下,尝试将结果初始化为0。在第二种情况下,添加
return
语句。Idea要求它,因为在某些情况下,两个条件语句都可能是错误的

private int getLargeArray( double[] x, double[] y ) {
    return x.length > y.length ? x.length : y.length;
} 

这是您可以做的最简单的事情

如果您简化逻辑(使用布尔值作为条件,使用else而不使用另一个If块),它应该可以工作
返回Math.max(x.length,y.length)编辑:如果这是一个赋值,而您不能使用Math.max,那么请使用下面的Russiancold方法。正如我所知,Java不支持返回值,返回值以if、else和for块为单位。-这不是真的,如果语句末尾至少有一个
else
,它将返回
if语句,就像开关中的
默认值一样。您的语句在最后一次执行时具有
else if
,这就是为什么在方法的最后一次执行时可能会出现
dead code
。在版本1:您必须初始化变量结果:
int result=0
在版本2:您必须具有
else
块或更改
else if(checkLargeArray==false){}
to
else{}
private int getLargeArray( double[] x, double[] y ) {
    return x.length > y.length ? x.length : y.length;
}