2014-01-10 33 views
0

我正在使用Selenium Webdriver和Java綁定,並且正在測試排序功能,因此您將值排列在arraylist = {"4"","4.5"","5.5""}中。所以基本上該字符串包含小數點以及雙引號。我有下面的代碼。問題在於,由於事實上,當它比較當前和以前的事實時,我得到錯誤。感謝您的幫助如何驗證數組列表的字符串值的升序?

public Boolean checkAscendingOrderScreensize(List<String> list){ 
    if(list == null || list.isEmpty()) 
     return false; 
    if(list.size() == 1) 
     return true; 
    for(int i=1; i<list.size();i++) 
    { 
     String current = list.get(i).toString(); 
     String previous = list.get(i-1).toString(); 
     current = current.replace(",","."); 
     current = current.replace("\"", ""); 
     previous = previous.replace(",","."); 
     previous = previous.replace("\"", ""); 

     if(current.compareTo(previous)>0) 
       return false; 
    } 
    return true; 
} 
+0

如果你希望你的升序排序列表,那麼你*想要*'current.compareTo(以前)'是'> 0',對不對?因爲'> 0'表示'current'大於'previous'。如果'current is less',結果將是'<0',如果相等,則結果爲0。順便說一下,這將通過比較每個字符來比較字符串;它不會比較數字值。這意味着''4.5「'>'」4「'和'5.5」'>'「4.5」'這是你想要的,但它也意味着''9「'>'」14「'你可能不會想。 – ajb

+0

對不起,我打算以相反的方式做,我正在做一些負面測試,並忘記將其改爲原來的。 –

回答

0

您需要在轉換之前將字符串轉換爲double。因此,解決辦法將是

public class Main { 

    public static void main(String bicycle[]) { 
     List<String> texts = new ArrayList<String>(); 
     texts.add("4\""); 
     texts.add("4.5\""); 
     texts.add("5.5\""); 
     System.out.println(checkAscendingOrderScreensize(texts)); 
      // prints true 

    } 

    public static boolean checkAscendingOrderScreensize(List<String> list) { 

     if (list == null || list.isEmpty()) 
      return false; 

     if (list.size() == 1) 
      return true; 

     for (int i = 1; i < list.size(); i++) { 
      String current = list.get(i).toString(); 
      String previous = list.get(i - 1).toString(); 
      current = current.replace(",", "."); 
      current = current.replace("\"", ""); 
      previous = previous.replace(",", "."); 
      previous = previous.replace("\"", ""); 

      if(Double.valueOf(current)<Double.valueOf(previous)) 


       return false; 
     } 

     return true; 
    } 

} 
+0

我已經嘗試轉換爲浮動,現在雙重但仍然得到一個錯誤。你缺少這部分代碼 - Double currentValue = Double.parseDouble(current) –

+0

@AdeBakre檢查我的完整解決方案。我已經把確切的測試案例放在了你所說的內容上。並能正常工作 – dhamibirendra

+0

謝謝你。檢查它,它的工作原理。標記爲答案 –

相關問題