2016-04-29 9 views
1
public static void main(String[] args) { 
    ArrayList<Integer> numberList = new ArrayList<>(); 
    numberList.add(1); 
    numberList.add(5); 
    numberList.add(3); 
    numberList.add(4); 
    ArrayList<String> letterList = new ArrayList<>(); 
    letterList.add("a"); 
    letterList.add("9"); 
    letterList.add("c"); 
    letterList.add("F"); 

    for (int x = 0; x < letterList.size(); x++) { 
     String combo = letterList.get(x); 
     String letter = combo.replaceAll("[^A-Za-z]", ""); 
     letterList.set(x, letter); 
    } 
    bubbleSort(numberList, letterList); 
} 

public static void bubbleSort(ArrayList<Integer> numberList, ArrayList<String> letterList) { 
    int n = numberList.size(); 
    int temp = 0; 
    String temp2 = null; 

    for (int i = 0; i < n; i++) { 
     for (int j = 1; j < (n - i); j++) { 

      if (numberList.get(j - 1) > numberList.get(j)) { 
       temp = numberList.get(j - 1); 
       temp2 = letterList.get(j - 1); 
       numberList.set(j - 1, numberList.get(j)); 
       letterList.set(j - 1, letterList.get(j)); 
       numberList.set(j, temp); 
       letterList.set(j, temp2); 
      } 

     } 
    } 
    System.out.println(letterList); 
} 

Es soll die Nummer Liste sortieren und den letterList sortieren, indem Sie aus, wie es die Nummer Liste sortierteWarum überspringt mein Programm beim Ausdrucken meines letterList-Arrays Ziffern? Es wird nur für das Drucken aus AZ und az

Zum Beispiel Array {1,5,3,4} und Array {a, 9, c, F} Es soll den ersten zu {1,3,4,5} und den zweiten zu {a, c, F, 9} sortieren. Wenn ich jedoch versuche, die Buchstabenliste auszudrucken, überspringt sie alle Zahlen, die in dem Array sein sollen. Bitte schauen Sie, ob Sie mir helfen können. Entschuldigung wegen der Formatierung. Ich habe keine Ahnung, wie ich Code einfügen soll.

Antwort

1

In dieser Schleife

for (int x = 0; x < letterList.size(); x++) { 
    String combo = letterList.get(x); 
    String letter = combo.replaceAll("[^A-Za-z]", ""); 
    letterList.set(x, letter); 
} 

Sie ersetzen alle Zahlen in Ihrem Brief Liste mit leeren Saiten.

Wenn Sie das nicht möchten, entfernen Sie einfach die gesamte for-Schleife.

Edit:

Wenn Sie Einträge filtern müssen, die es tun, wie dies durch ein Leerzeichen getrennt sind:

String myStr; //populate this value with your raw string 
String[] mySplit = myStr.split(" "); //split it into an array around spaces 
numberList.add(Integer.parse(mySplit[0])); 
letterList.add(mySplit[1]); 

Hinweis dies setzt voraus, dass Ihre Eingaben immer formatiert werden, wie Sie beschrieben, dh ein Nummer gefolgt von einer Zeichenfolge, die durch ein Leerzeichen getrennt ist.

+0

Wenn ich von einer Datei lese, die das Format 1 A, 2 f, 32 3, 93 r hat, wobei der erste Teil eine Zahl ist und der zweite Teil nach dem "" eine Zeichenkette sein soll, keine ganze Zahl. Wie gehe ich vor, nur die Zahlen zu meiner numberList hinzuzufügen, aber die Zeichenfolge danach, auch wenn es eine ganze Zahl ist, zu meiner letterList hinzuzufügen? – Copperhorse

+0

@Copperhorse Siehe meine Bearbeitung – nhouser9

+0

Es gibt einen Tippfehler in 'String mySplit'; sollte "String [] mySplit" lesen. – user2478398

Verwandte Themen