如何在for循环后返回true或false

时间:2016-05-29 12:08:47

标签: java

我编写了代码,代码对数组值进行排序。我的代码必须返回布尔值,但它没有像我想象的那样顺利完成。

控制台说; "此方法必须返回boolean"类型的结果。

这是我的代码

    double array[] ={3.2,9.4,7.1,1,2,4.1,8.88};
    //                       i     j1
    isItSort(array);
    wrtOut(array);

}

public static boolean isItSort(double[] numbers)
{

    int j=0;
    int i;
    for(i = 0; i<numbers.length; i++)
    {
        for(j =i+1; j<numbers.length; j++)
        {
            for(int j1 = j; j1<numbers.length; j1++)
            {
                boolean check = numbers[i]<numbers[j1];
                if(check)
                {

                    double temp = numbers[j1];
                    numbers[j1]= numbers[i];
                    numbers[i] = temp;
                    return true;
                }
            }
        }

    }

}

public static void wrtOut(double[] numbers){

    for(int i=0; i<=numbers.length-1;i++ )
    {

        System.out.println(numbers[i]);

    }

}

}

3 个答案:

答案 0 :(得分:1)

这是因为您没有为方法中的所有可能情况返回值,例如,如果check永远不会true您没有使用当前代码返回任何值,你应该在方法结束时返回一个默认值:

public static boolean isItSort(double[] numbers) {
...
    return false;
}

答案 1 :(得分:1)

isItSort() - 仅用于循环具有return语句。编译器不确定该方法是否会成功返回,因此它给出错误。如果

将会发生什么

布尔检查=数字[i]

没有给出真实的。如果for循环结束而不执行下面的块

,则该方法将无法返回任何值

如果(检查)                 {

                double temp = numbers[j1];
                numbers[j1]= numbers[i];
                numbers[i] = temp;
                return true;
            }

所以,理想情况下,如果没有条件满足,你应该返回false。因此,在方法结束时写一个返回false。程序将运行。

答案 2 :(得分:1)

你的方法'isItSort'有一个布尔返回,如果if语句为true,你声明返回true,但并不总是满足条件,因此编译器会在方法结尾处添加boolean return例如:

    public static boolean isItSort(double[] numbers)
    {

        int j=0;
        int i;
        for(i = 0; i<numbers.length; i++)
        {
            for(j =i+1; j<numbers.length; j++)
            {
                for(int j1 = j; j1<numbers.length; j1++)
                {
                    boolean check = numbers[i]<numbers[j1];
                    if(check)
                    {

                        double temp = numbers[j1];
                        numbers[j1]= numbers[i];
                        numbers[i] = temp;
                        return true;
                    }
                }
            }
        }
       return true; <!-- you need to put appropriate return here -->
  }