2017-06-16 31 views
-1

對不起,如果這個問題有點混亂。基本上,我有一個名爲list1的數組列表。 list1包含:如何拆分ArrayList的每一行的內容?

a Mark 
c Peter 
r Edwin 
i Rachel 
f Sebastian 
p 

如何只訪問單數字後面的名字?例如,我只想訪問名字「馬克,彼得,埃德溫,雷切爾和塞巴斯蒂安」。我知道如何訪問第一個字母「a,c,r,i,f,p」,但不知道如何訪問其餘的名稱。以下是我迄今爲止:

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)); 
     } 

    } 

這是我的輸出如下:

a 
c 
r 
i 
f 
p 
MarkPeterEdwinRachelSebastian 

但我希望它看起來像這樣:

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

'for(String s1:list1)System.out.println(s1.substring(2));' – shmosel

+0

您錯過了原始輸出中的'a' –

回答

1

你幾乎沒有,問題與​​內循環有關。 因爲你只使用print它不會打印斷線之後,一切都保持在同一行

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

這將是更容易使用字符串的拆分方法,並通過空格分割每個字符串。然後,您將得到一個包含兩個元素(數字和名稱)的數組。它應該如下:

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

而是使用迭代器,你可以簡單地使用,每個
短碼

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

看起來像你的問題,如果我理解正確的話只是遍歷列表格式化的問題,而不是這個

(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)); 
     } 

嘗試做

(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)); 
     } 

您的打印件將所有內容都返回到一行中,而不是另一行中的foreach項目。