2017-09-29 12 views
1

私は3つの要素を持ち、最初の名前と最後の名前はボタンになっています。私は彼らが名前でアルファベット順にlastnameによって命名されたかどうか確認する必要があります。要素のためのPageオブジェクトはListV_Sortedです。私はファーストネームの要素でソートしたと思う。 0要素= Jack Daniels、1要素= John Fera、2要素= Mike Durov。 ListVは要素のページオブジェクトです。私はエラーが出るそれは期待通りだが、間違っていると言います。代わりにあなたがデータ構造を使用して入力を並べ替えることがjava.util.TreeSetを使用する必要がありますjava.util.LinkedListアルファベット順と姓でアルファベット順に並べ替える方法

@SuppressWarnings("unchecked") 
public void sortingOrder() { 

    Log.log(driver).info("About to Alphebetically Sort"); 
    List<MobileElement> products_MobileElements = new LinkedList<MobileElement>(); 
    products_MobileElements = (List<MobileElement>) TicketPassesNames; 
    LinkedList<String> product_names = new LinkedList<String>(); 

    for(int i=0;i<products_MobileElements.size();i++){ 

     String s = products_MobileElements.get(i).getAttribute("checked"); 
     String[] tokens = s.split(""); 
     String firstName = ""; 
     String lastName = ""; 
     if(tokens.length > 0) { 
      firstName = tokens[0]; 
      lastName = tokens[tokens.length -1]; 
      product_names.add(s); 
      product_names.add(firstName); 
      product_names.add(lastName); 
     } 
    } 
    boolean result = checkAlphabeticalOrder(product_names); 

    Assert.assertEquals(checkAlphabeticalOrder(product_names), true); 
    Log.log(driver).info("Tickest Passes names are in alphabetical order."); 
    System.out.println(result); 
} 

//Method takes a String to Sort AlphabeticalLy 
public static boolean checkAlphabeticalOrder(LinkedList<String> product_names){ 

    String previous = ""; // empty string 

    for (final String current: product_names) { 
     if (current.compareTo(previous) < 0) 
      return false; 
     previous = current; 
    } 

    return true; 
} 
+0

'スプリット( "");'単一の文字に文字列を分割します。したがって、product_names.get(0)は "Jack Daniels"、product_names.get(1)= "J"、product_names.get(2)= "s"になります。私はそれがあなたがするつもりではないと思います。とにかく、あなたはその全体を分割して+あなたの意図するものを実際には得られません+とにかく各名前のリストに3つの値を追加します。私はあなたの全体のアプローチを再考する必要があり、おそらく機会を使用してデバッガの使い方を学ぶ必要があると思います。 –

+0

要素は基本的に文字列= "Jack Daniels"私は2つの単語を分割しようとしていました。どうやってやるの? –

+0

空の文字列の代わりにスペースで分割することは、始まりになります。しかし、もう一度:私はまだあなたが全く分割したい理由を理解していません。文字列をそのまま比較するのはなぜですか? –

答えて

1

私は、プログラムの実行後に "true"を出力するコードをわずかに変更したバージョンを作成しました。主な違いは、java.util.TreeSetCollectionインターフェイスの使い方です。ここで

が変更されたバージョンです:

import java.text.ParseException; 
import java.util.Arrays; 
import java.util.Collection; 
import java.util.List; 
import java.util.TreeSet; 

public class SimpleTests2 { 

    public static void main(String[] args) throws ParseException { 

     sortingOrder(); 
    } 

    //Method takes a String to Sort AlphabeticalLy 
    public static boolean checkAlphabeticalOrder(Collection<String> product_names) { 

     String previous = ""; // empty string 

     for (final String current : product_names) { 
      if (current.compareTo(previous) < 0) 
       return false; 
      previous = current; 
     } 

     return true; 
    } 

    @SuppressWarnings("unchecked") 
    public static void sortingOrder() { 

//  Log.log(driver).info("About to Alphebetically Sort"); 
     List<MobileElement> products_MobileElements; 
     products_MobileElements = Arrays.asList(
       new MobileElement("Mike Durov"), new MobileElement("Jack Daniels"), new MobileElement("John Fera")); 
     // Here is the main change to your code! 
     Collection<String> product_names = new TreeSet<>(); 

     for (int i = 0; i < products_MobileElements.size(); i++) { 

      String s = products_MobileElements.get(i).getAttribute("checked"); 
      String[] tokens = s.split(" "); 
      String firstName = ""; 
      String lastName = ""; 
      if (tokens.length > 0) { 
       firstName = tokens[0]; 
       lastName = tokens[tokens.length - 1]; 
       product_names.add(s); 
       product_names.add(firstName); 
       product_names.add(lastName); 
      } 
     } 
     boolean result = checkAlphabeticalOrder(product_names); 

//  Assert.assertEquals(checkAlphabeticalOrder(product_names), true); 
//  Log.log(driver).info("Tickest Passes names are in alphabetical order."); 
     System.out.println(result); 
     System.out.println(product_names); 
    } 


    private static class MobileElement { 

     private String name; 

     public MobileElement(String name) { 
      this.name = name; 
     } 

     public String getAttribute(String checked) { 
      return name; 
     } 
    } 
} 
+0

どのように結果がfalse、false、falseのように出力されるのかよくおねがいします。 –

関連する問題