【问题标题】:ArrayList isn't printing outArrayList 没有打印出来
【发布时间】:2014-09-22 11:12:06
【问题描述】:

我创建了两个数组。我把它们加起来了。然后我想通过定义一个方法来打印出新数组。但是该方法无法打印出数组。我的代码哪里出错了?

package stringpractice;

import java.util.LinkedList;
import java.util.List;

public class StringPractice {

    public static void main(String[] args) {

        String[] boy = {"John", "Russel", "Ryan"};
        List<String> l1 = new LinkedList<String>();

        for (String x : l1) {
            l1.add(x);

        }

        String[] girl = {"Sara", "Leena", "Emilia"};
        List<String> l2 = new LinkedList<String>();
        for (String y : l2) {

            l2.add(y);
            l1.addAll(l2);
            l2 = null;
            printMe(l1);

            /*removeStuff(l1, 1,2);
             reverseMe(l1);
             */
        }

    }

    public static void printMe(List<String> l1) {
        for (String p : l1) {
            System.out.printf("%s ", p);
        }
        System.out.println();

    }

}

【问题讨论】:

    标签: java arraylist linked-list arrays


    【解决方案1】:

    for 循环遍历仍然为空的列表。

       for (String x : boys) {
            l1.add(x);
       }
    

    或者

       Collections.addAll(l1, boys);
    

    将 l2 设置为 null 不会很好地循环。并且 addAll 可以在循环外完成。

    【讨论】:

      【解决方案2】:

      您的列表中没有可打印的内容。你需要改变

      for (String x : l1) // l1 don't have a single element
                          // at this moment 
      

      for (String y : l2) // same as l1 
      

      for (String x : boy)
      

      for (String x : girl) 
      

      再次

       l2.add(y);
       l1.addAll(l2);
       l2 = null; // inside for lopp l2 become null
      

      所以你会从这里得到NPE

      更正的代码

        public static void main(String[] args) {
          String[] boy = {"John", "Russel", "Ryan"};
          List<String> l1 = new LinkedList<>();
          for (String x : boy) {
              l1.add(x);
          }
          String[] girl = {"Sara", "Leena", "Emilia"};
          List<String> l2 = new LinkedList<>();
          for (String y : girl) {
              l2.add(y);
              l1.addAll(l2);
              printMe(l1);
          }
          l2 = null;
      }
      
      public static void printMe(List<String> l1) {
          for (String p : l1) {
              System.out.printf("%s ", p);
          }
          System.out.println();
      }
      

      【讨论】:

        【解决方案3】:

        List L1L2 都是空的。所以你的for 循环体都没有被执行。

        【讨论】:

          【解决方案4】:

          公共类 StringPractice { public static void main(String[] args) {

              String[] boy = { "John", "Russel", "Ryan" };
              List<String> l1 = new ArrayList<String>(Arrays.asList(boy));
          
              String[] girl = { "Sara", "Leena", "Emilia" };
              List<String> l2 = new ArrayList<String>(Arrays.asList(girl));
          
              l1.addAll(l2);
              l2 = null;
              printMe(l1);
          
              /*removeStuff(l1, 1,2);
               reverseMe(l1);
               */
          
          }
          
          public static void printMe(List<String> l1) {
              for (String p : l1) {
                  System.out.printf("%s ", p);
              }
              System.out.println();
          
          }
          

          【讨论】:

            【解决方案5】:

            您不会在任何地方遍历 boy[]girl[] 数组。您需要像 for (String x : boy) 一样进行迭代以获得某些结果。

            【讨论】:

            • 你的回答有帮助,这就是我想要的。不幸的是,我不能同时接受两个答案。否则,我也将您的答案视为已接受。
            【解决方案6】:

            您需要遍历 boy[] 和 girl[] 数组才能在其中打印内容

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-06-10
              • 1970-01-01
              • 1970-01-01
              • 2021-12-24
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多