我建立我的第一個程序。這個想法是從文件中讀取問題列表,然後允許用戶選擇一些隨機問題來詢問。例如,該計劃將有30個問題。但是,用戶可能一次只想練習5個問題。我已經達到了我的第一個真正的掛斷。整數的ArrayList整數小整數
我正在寫一個方法,允許用戶輸入他們想問的問題數量。該方法將輸出一個不超過問題數量的x個隨機數的數組。然後,我打算使用該數組從另一個已經成功構建的方法調用實際問題。
下面是方法
public int [] ranQuest(int numQs, int totalQs) {
int [] numberQs = new int [numQs];
int maxNum = totalQs;
ArrayList<Integer> allQs = new ArrayList();
for (int x = 0; x < maxNum; x++) {
allQs.add(x);
}
Collections.shuffle(allQs);
for(int x = 0; x < numberQs.length; x++) {
numberQs[x] = allQs.get(x);
}
return numberQs;
}
我評論了我的故障排除打印行的代碼。 這裏是我的測試代碼:
public static void main(String[] args) {
GameLoad gl = new GameLoad();
Scanner scan = new Scanner(System.in);
String userAns = null;
Random randInt = new Random();
QuestGen questGen = new QuestGen();
int [] quests = questGen.ranQuest(4, 10);
for (int quest : quests) {
System.out.println(quests[quest]);
}
}
當我運行的3,3或4,4它須藤作品輸入的代碼。我沒有遇到outofbounds異常錯誤,但數字並不按我期望的順序排列。當我運行代碼爲3,10或5,30時...我得到一個outofbounds異常錯誤,讓我暈倒,因爲我認爲我的for循環很好。
我做了很多搜索,看起來好像我可能有一個問題,試圖將整數轉換爲整數,或者我的for循環來填充int數組是不正確的。有沒有一種方式或更好的方式,然後路徑進入採取一個X數據填充的數組順序混合起來,然後填充一個新的更小的數組?
在此先感謝 喬喬
提示:永遠不要聲明類型爲'ArrayList'的列表,而應使用'List',它是'ArrayList'實現的類。這將允許您輕鬆切換不同的實現(另一個受歡迎的'List'實現是'LinkedList')。所以就去'List myList = new ArrayList();' –
dabadaba
謝謝你的提示。我曾在其他地方看到過這一點,並不確定發生了什麼事情。你的提示清除了它。 – jojonac
您應該檢查foreach和差異以減少未來的問題Foreach:http://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work For: https:/ /www.quora.com/How-does-the-lo-loop-work-in-Java希望它能幫助你解決你的問題! –