【问题标题】:missing return statement for a for loop to sort numbers from lowest to highest [duplicate]缺少for循环的return语句以从最低到最高对数字进行排序[重复]
【发布时间】:2014-02-17 19:23:52
【问题描述】:
public int sorting ( int side1, int side2,int side3)
{ 
    int[] xx= {side1,side2,side3};
    int trace=0;

    for (int i = 0; i < xx.length-1; i++) {
        for (int j = i+1; j < xx.length; j++) {
            if (xx[i] > xx[j]) {
                int save= xx[i];
                xx[i]= xx[j];
                xx[j]= save;
            }
            trace++;
        }
    }

    for (int i = 0; i < xx.length; i++) {
        int number = xx[i]; 
        return number;
    }
}// missing return statement

创建一个将数字从最低到最高排序的方法作为三角形程序的一部分,它给了我一个缺少返回语句的错误。我不知道我到底错过了什么。请帮忙。

【问题讨论】:

  • 如果在最后一个循环中 i 大于 xx.length 会发生什么?
  • 你不能从一个方法返回多个值(你打算用你的 for 循环来做)。而是返回整个数组。
  • 编译器知道,最后一个for 循环永远无法进入 --> 缺少return 语句
  • 你的previous question is pretty much the same as this one,人们对此提供了多种解释。

标签: java sorting numbers return


【解决方案1】:

你的最后一个 for 循环没有意义

for (int i = 0; i < xx.length; i++) {
    int number = xx[i]; 
    return number;
}

这将始终返回xx[0]。为什么有一个for 循环呢?

你得到的错误是因为编译器不知道是否会进入for循环,所以它认为有可能跳过循环,在这种情况下不会有@987654325 @ 声明。

您的意思可能不是for 循环,而是

return xx;

但是你需要将方法签名更改为

public int[] sorting ( int side1, int side2,int side3)

【讨论】:

    【解决方案2】:

    你必须在for循环之后定义一个return语句,就像你的情况一样,因为可能会有循环不会运行的情况,你可以这样做

    public int sorting ( int side1, int side2,int side3)
            { 
                int[] xx= {side1,side2,side3};
                int trace=0,number = 0;///declare the variable so it should be accessible outside the loop
    
    
                for (int i = 0; i < xx.length-1; i++) {
                    for (int j = i+1; j < xx.length; j++) {
                        if (xx[i] > xx[j]) {
                            int save= xx[i];
                            xx[i]= xx[j];
                            xx[j]= save;
                        }
                        trace++;
                    }
                }
    
                for (int i = 0; i < xx.length; i++) {
                   number = xx[i]; 
    
                }
                return number;//return statement in the method you can also declare the return statements in the loop but method should also contain one return statement
            }
    

    如果你想一一返回值,那么这是不可能的,所以在这种情况下,最好的选择是创建数组并将数字存储在其中,然后返回该数组

    【讨论】:

    • 但是最后一个for循环是没有意义的,它总是return xx[xx.length-1]。我认为 OP 试图一一返回数组中的所有值,这是不可能的。
    猜你喜欢
    • 2019-10-07
    • 2018-05-21
    • 2016-07-03
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多