我有以下代码;目的是返回数组中按字母顺序排列的最小成员。
public String smallest() {
String smallest = "";
int i = 0;
while(log[i] != null) {
int nextIndex = i+1;
if(log[nextIndex] == null) {
break;
}
if(log[i].compareToIgnoreCase(log[nextIndex]) >0) {
smallest = log[nextIndex];
}
else {
smallest = log[i];
}
i++;
}
if(log[i].compareToIgnoreCase(smallest) <0) {
smallest = log[i];
}
return smallest;
}
当我运行测试仪时,其中两个测试失败,另外两个继续正常。第一个是成功测试的示例,后者是失败测试之一的示例。
public void test_3Elements_smallest_in_middle() {
strLog.insert("string 2"); strLog.insert("string 1");
strLog.insert("string 3");
assertEquals(strLog.smallest(), "string 1");
}
public void test_3Elements_smallest_at_beginning() {
strLog.insert("string 1"); strLog.insert("string 2");
strLog.insert("string 3");
assertEquals(strLog.smallest(), "string 1");
}
我到底能做些什么来解决这个问题?更具体地说,对于后一个失败的那个,它给了我一个错误,关于它期待字符串 [2] 但它是字符串 [1]。这让我感到困惑;如果它可以在数组中间挑选出最小的,为什么它不能在开头挑选出最小的?