我试图编写检查数组是否已排序的代码,homework说它必须在一个带有布尔返回的方法中,但是如果我把返回放在for循环中它之前停止for循环它可以检查的不仅仅是列表中的前两位数字。无论哪种方式,即使我把循环中的返回值eclipse告诉我方法中没有布尔返回值?我不确定如何让它工作,无法在网上找到类似的东西请帮助:)
public static boolean isSorted (double [] list) {
for (int i=1; i<list.length; i++) {
if (list[(int) i-1] > list[(int) i] ) {
System.out.println("Not Sorted");
return false;
}
else {
return true;
}
}
}
答案 0 :(得分:6)
public static boolean isSorted(double[] list) {
for (int i = 1; i < list.length; i++) {
if (list[i - 1] > list[i]) {
System.out.println("Not Sorted");
return false;
}
}
return true;
}
试试这段代码。如果已排序,您将在最后返回true
答案 1 :(得分:3)
这只是为了提供这里讨论的替代答案。我看到了首先学习迭代版本的好处,但逻辑可以被抽象为这样的东西:
public static boolean isSorted(double[] list) {
return Arrays.equals(list, Arrays.sort(list));
}
答案 2 :(得分:2)
试试这个
public static boolean isSorted (double [] list){
boolean result = true;
for(int i=1; i<list.length; i++) {
if (list[i-1] > list[i]) {
System.out.println("Not Sorted");
result = false;
break;
}
}
return result;
}
答案 3 :(得分:2)
只是遍历数组,如果您发现list[i]
&gt; list[i+1]
,返回false。它可以通过以下方式完成:
public static boolean isSorted (double [] list){
for(int i=0; i<list.length-1; i++){
if (list[i] > list[i+1]){
System.out.println("Not Sorted");
return false;
}
}
return true;
}
答案 4 :(得分:0)
这是一个学校项目吗?然后我不认为你的老师喜欢看你如果你在某个时刻打破它就使用for-loop。请改用while循环。
public static boolean isSorted (double [] list) {
boolean sorted = true;
int i = 1;
while (i < list.length && sorted) {
sorted = (list[i-1] > list[i]);
i++;
}
return sorted;
}
虽然未经过测试,但您可能需要对i
进行微调。
答案 5 :(得分:0)
这里的主要问题是:编译器无法检查是否输入了for循环。 如果列表为空,则该函数确实不会返回任何内容!因此与返回布尔值的承诺相冲突。 这就是上面提出的答案工作的原因:如果for循环完成(或者根本没有运行),它们总是返回一个布尔值。
答案 6 :(得分:-2)
public static boolean isSorted (double [] list){
boolean isSorted=true;
for(int i=1; i<list.length; i++){
if (list[i] > list[i+1]){
System.out.println("Not Sorted");
isSorted = false;
}
}
return isSorted;
}