如何传入字符串的ArrayList并将每个单独的数组转换为自己的字符串(java)?

时间:2017-01-18 02:10:36

标签: java arrays string arraylist infinite-loop

所以我采取的输入文件包含如下字符串:

birthday54
happy75
nifty43
bob1994

这些字符串是ArrayList的一部分。我想通过一个方法传递这个ArrayList,该方法可以获取每个单独的字符串并单独打印出来。所以基本上,我如何获取字符串的ArrayList,分隔每个单独的字符串,然后打印这些字符串?在我的代码中,我的while循环条件为true所以我在这里有一个无限循环,并且它只输出第一个字符串" birthday54"无限地。我不知道我应该为while循环提供什么条件。或者,如果我甚至应该有一个while循环。这是我的代码:

    public static void convArrListToString(ArrayList<String> strings){
            int i=0;
            while (true){
                 String[] convert = strings.toArray(new String[i]);  
                 System.out.println(convert[i]);
                }  
            }
    public static void main(String [] args) 
{
    Scanner in = new Scanner(new File("myinputcases.txt"));
    ArrayList<String> list = new ArrayList<String>();
    while (in.hasNext())
        list.add(in.next());

    convArrListToString(list);

3 个答案:

答案 0 :(得分:1)

我相信你只需要迭代ArrayList并使用“Get”方法来获取每个字符串:

for(int i = 0 ; i < list.size(); i++){ 
   System.out.println(list.get(i)); 
}

或者您可以使用for each循环

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

喝彩!

答案 1 :(得分:0)

改变这个:

while (true) {
    String[] convert = strings.toArray(new String[i]);  
    System.out.println(convert[i]);
}  

对此:

for (String strTemp : strings) {
    System.out.println(strTemp);
}

它只输出“ birthday54 ”,因为您没有增加i。您可以通过将i++放在while语句的末尾来增加它,但如果在迭代ArrayList中的所有值后执行此操作,则会出现错误。看看我的答案,您只需使用for循环来迭代ArrayList

答案 2 :(得分:0)

看起来很痛苦的人,试试这个而不是你的while循环:

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

不需要while循环,数组列表是一个Collections对象,它是Java中的一个容器类,可以按对象和索引进行迭代,所以这应该逐个拉出每个字符串,直到它接近结尾数组列表。

Resource on collections in java