![](/img/trans.png)
[英]Two lines of my System.out.println code do not work and I cannot figure out why
[英]cannot figure out why System.out.println isn't working
我正在使用此代碼嘗試打印出兩行:列表中的原始元素和列表切換后的元素。
但是,當我運行該程序時,僅打印列表中的原始元素。 我做錯了什么嗎?
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);
}
}
我認為這是因為您從未在任何地方修改過列表。 我相信swap
會修改您的列表,但您從未在主函數中調用過function swap
。
問題是您從未使用過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);
}
}
您的程序永遠不會從main調用swap
。
您僅將元素添加到列表中並打印。 我相信您應該在打印之前打電話給swap
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.