2014-01-10 2 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 (предыдущий)' to be '> 0', правильно? Поскольку '> 0' означает, что' current' больше, чем 'предыдущий'. Результатом будет '<0', если« ток меньше », и 0, если они равны. Кстати, это будет сравнивать строки, сравнивая каждый символ; он не будет сравнивать числовые значения. Это означает '' 4.5 "'> '" 4 "' и '" 5.5 "'> '" 4.5 "' то, что вы хотите, но это также означает '' 9 "'> '" 14 "', которые вы не можете хотеть. – ajb

+0

Извините, я хотел сделать это наоборот, я делал некоторые отрицательные тесты на нем и забыл изменить его на оригинальное. –

ответ

0

Вам необходимо будет скрыть строку до двойного преобразования. Поэтому обходным решением будет

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

Я уже пробовал конвертировать в float и теперь удваивать, но все равно получить false. Вам не хватает этой части вашего кода - Double currentValue = Double.parseDouble (текущий) –

+0

@AdeBakre проверить мое полное решение. Я поставил точный тест, что вы сказали. и он работает правильно – dhamibirendra

+0

Спасибо за это. Проверял его, и он работает. Отмечено это как ответ –

Смежные вопросы