我正在使用此代码尝试打印出两行:列表中的原始元素和列表切换后的元素。
但是,当我运行程序时,只打印列表中的原始元素。我做错了吗?
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);
}
}
答案 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