我建立我的第一个程序。这个想法是从文件中读取问题列表,然后允许用户选择一些随机问题来询问。例如,该计划将有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希望它能帮助你解决你的问题! –