【发布时间】:2011-04-14 17:11:21
【问题描述】:
这是问题的基本形式:
编写一个名为 isSorted 的方法,该方法接受一个双精度数组作为参数,如果已排序则返回 true,否则返回 false。
这是我的代码:
public static boolean isSorted(double[] a){
if (a.length == 1){
return true;
}
boolean apples = false;
int i = 1;
while (i <= a.length-1){
if (a[i] > a[i-1]){
apples = true;
} else {
apples = false;
}
i++;
}
return apples;
}
当传递一个双精度数组 {16.1, 12.3, 22.2, 14.4}, {1.5, 4.3, 7.0, 19.5, 25.1, 46.2} 或 {42.0} 时,它分别返回 false、true、true。但是,当传递一个数组 {1.5, 4.3, 7.0, 19.5, 7.8, 25.1, 46.2} 时,它应该返回 false 时返回 true。
【问题讨论】:
-
现在的方式,您仅根据最后一项是否大于倒数第二项来返回值。你想要做的是假设它已排序,然后一旦出现不正确的顺序就停止检查并返回 false
-
在“else { apples = false; }”中应该是“else { return false; }”。真的,如果它没有排序,你只需要循环并返回false,最后只需要“返回true”。当两个元素相等时,您也没有处理这种情况。
-
传入空列表时,您也没有处理这种情况。