2017-06-16 6 views
-1

Sorry, wenn die Frage ein wenig verwirrend ist. Im Grunde habe ich eine Arraylist namens list1. list1 enthält:Wie teilt man den Inhalt jeder Zeile einer ArrayList auf?

a Mark 
c Peter 
r Edwin 
i Rachel 
f Sebastian 
p 

Wie kann ich nur auf die Namen zugreifen, die nach dem singulären Buchstaben kommen? Zum Beispiel möchte ich nur auf die Namen "Mark, Peter, Edwin, Rachel und Sebastian" zugreifen. Ich weiß, wie ich auf die ersten Buchstaben "a, c, r, i, f, p" zugreifen kann, weiß aber nicht, wie ich auf die restlichen Namen zugreifen kann. Hier ist, was ich bisher:

for (Iterator<String> it = list1.iterator(); it.hasNext();) { 
     String s = it.next(); 
     System.out.println(s.charAt(0)); 
    } 
    for (Iterator<String> it = list1.iterator(); it.hasNext();) { 
     String s1 = it.next(); 
     for (int i=2; i<s1.length(); i++){ 
      System.out.print(s1.charAt(i)); 
     } 

    } 

Dies ist, was meine Ausgabe wie folgt aussieht:

a 
c 
r 
i 
f 
p 
MarkPeterEdwinRachelSebastian 

Aber ich will es so aussehen:

c 
r 
i 
f 
p 
Mark 
Peter 
Edwin 
Rachel 
Sebastian 
+2

'für (String s1: list1) System.out.println (s1string (2));' – shmosel

+0

Sie haben das 'a' in Ihrer ursprünglichen Ausgabe verpasst –

Antwort

1

Sie sind fast da ist das Problem mit der inneren for-Schleife. Da Sie nur print verwenden wird es nicht den Zeilenumbruch drucken und alles bleibt auf der gleichen Linie

for (Iterator<String> it = list1.iterator(); it.hasNext();) { 
     String s = it.next(); 
     System.out.println(s.charAt(0)); 
    } 
    for (Iterator<String> it = list1.iterator(); it.hasNext();) { 
     String s1 = it.next(); 
     for (int i=2; i<s1.length(); i++){ 
      System.out.print(s1.charAt(i)); 
     } 
     System.out.println(); 
    } 
0

Es wäre viel einfacher, String der Split-Methode zu verwenden, und teilen jede Saite durch den leeren Raum. Dann hätten Sie als Ergebnis ein Array mit zwei Elementen, dem Buchstaben und dem Namen. Es sollte wie folgt funktionieren:

for(String str : list1) 
    { 
     String[] splitted = str.split(" "); 
     System.out.println(splitted[0]); 
    } 

    for(String str : list1) 
    { 
     String[] splitted = str.split(" "); 
     System.out.println(splitted[1]); 
    } 
0

Statt einen Iterator zu verwenden, können Sie einfach die Liste durchqueren mit foreach-
Kurzcode

for (String s : list1) { 
    System.out.println(s.charAt(0)); 
} 
for (String s : list1) { 
    System.out.println(s.substring(2)); 
} 
0

wie Ihr Problem sieht, wenn ich das richtig verstehe, ist nur ein Formatierungsproblem anstelle dieses

(Iterator<String> it = list1.iterator(); it.hasNext();) { 
     String s1 = it.next(); 
     for (int i=2; i<s1.length(); i++){ 
      System.out.print(s1.charAt(i)); 
     } 

Versuchen

tun
(Iterator<String> it = list1.iterator(); it.hasNext();) { 
     String s1 = it.next(); 
     for (int i=2; i<s1.length(); i++){ 
      System.out.println(s1.substring(2)); 
     } 

Ihr Ausdruck gibt alles in einer einzelnen Zeile statt einer anderen Zeile für jeden Artikel in der Arraylist zurück.

Verwandte Themen