【问题标题】:How to pass in an ArrayList of strings and convert each separate array into it's own string (java)?如何传入字符串的 ArrayList 并将每个单独的数组转换为它自己的字符串(java)?
【发布时间】:2017-01-18 02:10:36
【问题描述】:

所以我正在获取一个包含以下字符串的输入文件:

birthday54
happy75
nifty43
bob1994

这些字符串是 ArrayList 的一部分。我想通过一个可以获取每个单独的字符串并单独打印出来的方法来传递这个 ArrayList。所以基本上,我如何获取字符串的 ArrayList,分离每个单独的字符串,然后打印这些字符串?在我的代码中,我的 while 循环条件为真,所以我在这里有一个无限循环,它只无限输出第一个字符串“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);

【问题讨论】:

  • 你的所作所为简直是疯了……
  • 大声笑我知道。我将这个数组列表冗余转换为字符串的主要目的是,我可以使用这些字符串将它们转换为它们的 ascii 等价物,但我已经弄清楚了那部分。
  • 如何获取字符串的 ArrayList,分隔每个单独的字符串... 字符串列表已经分开。目前尚不清楚您要尝试什么。

标签: java arrays string arraylist infinite-loop


【解决方案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);
}

干杯!

【讨论】:

    【解决方案2】:

    改变这个:

    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

    【讨论】:

    • 你的意思是strings.forEach(System.out::println);
    • @shmosel 是的,这绝对比我的回答短。谢谢:)
    • 嘿@shmosel,我怎样才能获取我刚刚打印的那些字符串(使用你的代码)并将它们传递给另一个不同的函数?
    • @user7428413 如果是静态方法,可以strings.forEach(ClassName::methodName);
    • @shmosel,你绝对是个天才。还有一个问题,如果我实现你刚刚编写的代码并将其传递给一个使用 for 循环的函数,那么运行时间是 O(n^2) 还是 O(n)?
    【解决方案3】:

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

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

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

    Resource on collections in java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      相关资源
      最近更新 更多