2017-06-16 30 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项目。