我编写了代码,代码对数组值进行排序。我的代码必须返回布尔值,但它没有像我想象的那样顺利完成。
控制台说; "此方法必须返回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]);
}
}
}
答案 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 -->
}