无法弄清楚System.out.println无法正常工作的原因

时间:2015-06-22 00:29:32

标签: java arraylist

我正在使用此代码尝试打印出两行:列表中的原始元素和列表切换后的元素。

但是,当我运行程序时,只打印列表中的原始元素。我做错了吗?

import java.util.ArrayList;
import java.util.List;


public class ListADT {

  public static void main (String[] args){
    //create a list
    List <String> myList = new ArrayList<>(); {
      myList.add("A");
      myList.add("B");
      myList.add("C");
      myList.add("D");
      myList.add("E");

      //show the elements of that list
      System.out.println(myList);
    }
  }

  // precondition: x and y are >= 0 and < mylist.size()
  //precondition: mylist is not null
  void swap(int x, int y, List <String> myList) {
    String s = myList.get(x);
    myList.set(x, myList.get(y));
    myList.set(y, s);
    swap(1, 3, myList);

    //now console should show new list with elements switched
    System.out.println(myList);
  }

}

4 个答案:

答案 0 :(得分:2)

我认为这是因为您从未在任何地方修改过您的列表。 我相信swap会修改您的列表,但您从未在主函数中调用函数swap

答案 1 :(得分:1)

问题是你从未使用过swap()方法。通过调用swap()内部的swap(),您正在执行名为recursion的操作。这里哪个错了。所以我已将swap()调用移至main()方法。我修改了你的代码。看看这个。

public class Main {

    public static void main (String[] args){
        //create a list
        List<String> myList = new ArrayList<String>(); {

            myList.add("A");
            myList.add("B");
            myList.add("C");
            myList.add("D");
            myList.add("E");
            //show the elements of that list
            System.out.println(myList);
            swap(1, 3, myList);

        }}
    //precondition: x and y are >= 0 and < mylist.size()
    //precondition: mylist is not null

    static void  swap(int x, int y, List <String> myList) {

        String s = myList.get(x);
        myList.set(x, myList.get(y));
        myList.set(y, s);

        //now console should show new list with elements switched
        System.out.println(myList);
    }
}

答案 2 :(得分:0)

您的计划永远不会从主电话中拨打swap

答案 3 :(得分:0)

您在列表中添加了元素并打印出来。 我相信你应该在打印前调用swap