2012-02-01 81 views
0

怎样才能将数组列表中的值返回到屏幕上,例如: System.out.println输出数组列表的内容

我正在考虑for循环,例如

for (String s : list) 
{ 
    System.out.println(s); 
} 

但它抱怨它不能将一个对象转换为字符串 - 我如何将它转换为字符串?

代码:

public static void GetStatsProc(String operation) 
{ 
    try { 
     Process p=Runtime.getRuntime().exec(operation); 
     p.waitFor(); 
     BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream())); 
     String line=reader.readLine(); 
     while(line!=null) 
     { 
      // Add all lines into an array 
      ArrayList list = new ArrayList(); 
      list.add(line); 
      System.out.println(line); 
      line=reader.readLine(); 
     } 

    } 
    catch(IOException e1) {} 
    catch(InterruptedException e2) {} 
} 
+3

您应该使用通用'ArrayList'(即'ArrayList ')。 – Bernard 2012-02-01 15:50:58

+1

没有人指出你正在while循环的每次迭代中声明一个新列表。 – Sign 2012-02-01 15:53:24

+0

为什么你的示例代码不包含foreach循环?你想把它放在哪里? – Jim 2012-02-01 15:54:20

回答

6

如果你的问题是与印刷在for循环中,那么你的列表应声明

ArrayList<String> list = new ArrayList<String>(); 

和for循环需要看起来像

for (String s : list) 
{ 
    System.out.println(s); 
} 
3

只需使用代码:

System.out.println(list); 

打印清单。

+0

这只能用,因为ArrayList有一个重写的toString()(实际上在AbstractCollection中),所以它除了调试外并不经常成为你想要的东西。 – Jim 2012-02-01 15:51:57

+0

同意,但如果它是一个简单的'列表'像OP的代码那么它会打印它很好。 – anubhava 2012-02-01 15:56:16

+0

我的评论更多的是后人​​,而不是真的针对你,因为这个问题是一个新手Java程序员学习集合和泛型。其他一些新手可能会读到这一点,我只是想向他们提供警告。 – Jim 2012-02-01 17:22:09

1

我想你错过了:在你的代码中,它应该是for(String s:list),那么只要你有一个字符串列表就可以引用s。

1

请注意,每个对象都有一个toString()方法,但默认实现可能不会提供良好的结果。然而,在你的情况下,你正在处理字符串列表,因此你应该使用ArrayList<String>,正如其他人已经建议的那样。

如果你要循环的条目,并提供自己的格式(如换行等),试试这个:

for (Object o : list) 
{ 
    System.out.println(o); 
} 

这将在内部调用String.valueOf(o)它将调用o.toString()"null"如果o返回是null