2017-06-08 2 views
1

Ich arbeite mit String-Wert wie folgt String Ergebnis "aa,bb,cc,dd,ee".Wie kann ich unterschiedliche Werte in verschiedenen ArrayList in Android

Und schon spaltete es in aa bb cc dd ee mit

qrList = result.getContents().toString().split("\\,"); 
List<String> resultToString= new ArrayList(Arrays.asList(qrList)); 

Dann erstelle ich vier Arraylisten.

ArrayList<String> strA = new ArrayList(); 
ArrayList<String> strB = new ArrayList(); 
ArrayList<String> strCD = new ArrayList(); 
ArrayList<String> strE = new ArrayList(); 

Wenn ich diesen Code verwenden unten zu speichern Zeichenfolge in jede neue ArrayList.

for(int count=0; count<resultToString.size(); count++){ 
    //separate string to array list 
    if(count%5==0){ 
     strA.add(resultToString.get(count)); 
    }else if(count%5==1){ 
     strB.add(resultToString.get(count)); 
    }else if(count%5==2||count%5==3){ 
     strCD.add(resultToString.get(count)); 
    }else if(count==4){ 
     strE.add(resultToString.get(count)); 
    } 

Das richtige Ergebnis würde

  • strA gespeichert aa
  • strB bb
  • gespeichert sein strCD gespeichert cc und dd
  • strE gespeichert ee

Es spielt keine‘ t arbeiten, weil ich nur den Indexwert beibekomme 210 (strA gespeichert aa). Was soll ich tun, um meinen Code zu verbessern?

+2

Es wäre toll, wenn Sie [Code formatieren zuerst] (https://stackoverflow.com/posts/44433768/edit) –

+0

Sie spalten Sie funktionieren? Ich habe es manuell wie "aa, bb, cc, dd, ee" .toString() versucht. Split ("\\,"); und dann funktioniert der Code einwandfrei. – motis10

+0

Was Sie gesagt haben, ist nicht möglich. 'count == 4' muss für die angegebene Eingabe wahr sein. –

Antwort

0

Modulus Operator den Rest Ihrer Gleichung beschreibt. Lassen Sie uns ein Beispiel zeigen und erklären:

Wie erklärt in this documentation, führen die Durchführung Modul zwischen zwei Werte nur Ihnen den Restwert. Für z.B. 8 % 3 == 2 weil 8 dividiert durch 3 einen Rest von 2 übrig.

Der Grund, warum Ihr Code nicht Ihre gewünschten Ergebnisse zeigt, liegt an der Verwendung Ihres Modulusoperators. In Bezug auf die Verbesserung Ihres Codes, kann ich sagen, dass alles, was Sie wollten, ist, den Array List-Index zu verwenden, um die Zeichenfolge aus der Array-Liste resultToString hinzuzufügen.

Deshalb würde ich die Schleife auf die folgende Weise ändern:

for(int count=0; count < resultToString.size(); count++) { 
    //separate string to array list 
    if (count == 0){ 
    strA.add(resultToString.get(count)); 
    } else if (count == 1){ 
    strB.add(resultToString.get(count)); 
    } else if (count == 2 || count == 3){ 
    strCD.add(resultToString.get(count)); 
    } else if (count == 4){ 
    strE.add(resultToString.get(count)); 
    } 
} 

Eine Alternative zur Schleife ist direkt auf den resultierenden String[] und verwende diese Relativ Zähler in dem for-Schleife für z.B.

String[] qrList = results.getContent().toString().split("\\,"); 

for(int count = 0; count < qrList.length; count++) { 
    //each index represents the split string e.g 
    // [0] == "aa" 
    // [1] == "bb" 
    // [2] == "cc" 
    // [3] == "dd" 
    // [4] == "ee" 
    if (count == 0){ 
    strA.add(qrList[count]); 
    } else if (count == 1){ 
    strB.add(qrList[count]); 
    } else if (count == 2 || count == 3){ 
    strCD.add(qrList[count]); 
    } else if (count == 4){ 
    strE.add(qrList[count]); 
    } 
} 
+0

Um Koshux, Wenn ich Ihren Code zu testen, kann es keinen Wert in der ArrayList speichern. – Sylph

2

einfach startsWith verwenden und entsprechende Werte zur Liste hinzufügen

for(int count=0; count<resultToString.size(); count++){ 
     //separate string to array list 
     String s = resultToString.get(count); 

     if(s.startsWith("a")){ 
      strA.add(s); 
     }else if(s.startsWith("b")){ 
      strB.add(s); 
     }else if(s.startsWith("c")||s.startsWith("d")){ 
      strCD.add(s); 
     }else if(s.startsWith("e")){ 
      strE.add(s); 
     } 
    } 
+1

Anstatt eine alternative Lösung zu geben, erklären Sie bitte, warum sein Code nicht funktioniert. – earthw0rmjim

+0

@ earthw0rmjim von OP 'Was soll ich tun, um meinen Code zu verbessern? –

+0

Ich denke, die Strings sind willkürlich –

Verwandte Themen