naz*_*art 5 java sorting output
我需要估计数组列表是否已排序(不排序).
字符串排序时,它们按字母顺序排列.我尝试使用compareTo()方法来确定首先出现的字符串
如果数组列表已排序,则返回true,否则返回false.
码:
public boolean isSorted()
{
boolean sorted = true;
for (int i = 1; i < list.size(); i++) {
if (list.get(i-1).compareTo(list.get(i)) != 1) sorted = false;
}
return sorted;
}
Run Code Online (Sandbox Code Playgroud)
简单测试:
ArrayList<String> animals = new ArrayList<String>();
ArrayListMethods zoo = new ArrayListMethods(animals);
animals.add("ape");
animals.add("dog");
animals.add("zebra");
//test isSorted
System.out.println(zoo.isSorted());
System.out.println("Expected: true");
animals.add("cat");
System.out.println(zoo.isSorted());
System.out.println("Expected: false");
animals.remove("cat");
animals.add(0,"cat");
System.out.println(zoo.isSorted());
System.out.println("Expected: false");
**Output:**
false
Expected: true
false
Expected: false
false
Expected: false
Run Code Online (Sandbox Code Playgroud)
这个简单的测试只显示了1/3
覆盖率
如何解决这个问题.
您的方法中有一个小错误.应该 :
public boolean isSorted()
{
boolean sorted = true;
for (int i = 1; i < list.size(); i++) {
if (list.get(i-1).compareTo(list.get(i)) > 0) sorted = false;
}
return sorted;
}
Run Code Online (Sandbox Code Playgroud)
>0
而不是!=1
,你不能确定1
是否返回..