【发布时间】:2018-02-24 21:52:30
【问题描述】:
我有一个 1d 数组的问题和一个 2d 的答案数组。我正在尝试打印出一个问题和该问题的多项选择答案并获取用户输入,然后返回并获取第二个问题并从二维数组中打印出多项选择答案。对不起,如果混淆。 代码:
private String[] questions =
{"Favourite Sweet", "Favourite subject at Hogwarts", "Dream Vacation"};
private String [][] selection =
{{"1.Acid Pops","2.Sherbert Lemons","3.Bertie Bott's Every Flavour Beans",
"4.Cake","5.Hagrid's Rock Cakes","6.Chocolate Frogs","7.Ginger Newt",
"8.I hate sweets\n"},
{"1.Care of Magical Creatures","2.Charms","3.Defense Against the Dark Arts",
"4.Divination","5.Herbology","6.History of Magic","7.Muggle
Studies","8.Potions", "9.Study of Ancient Runes","10.Transfiguration\n"},
{"1.Anywhere with friends","2.Egypt","3.Hogwarts","4.Museum","5.India","6.Forest",
"7.Can't be bothered with a vacation\n"}
};
我想打印“Favourite Sweet”,然后打印 1-8 个糖果,然后打印“Hogwarts 最喜欢的科目”,然后打印 1-10 个科目,然后是“Dream Vacation”,打印 1-7 个假期。
我的代码很垃圾,但在这里:
public void printQuestion(){
for (rowQ = 0; rowQ <= questions.length; rowQ++){
System.out.println(questions[rowQ]);
for(int rowS = rowQ; rowS <= rowS; rowS++){
for(int colS = rowS; colS <= selection[rowS].length; colS++){
System.out.println(selection[rowS][colS]);
}
}
}
这就是我现在运行代码时发生的情况:
最喜欢的甜食
1.Acid Pops
2.Sherbert 柠檬
3.Bertie Bott's Every Flavor Beans
4.蛋糕
5.海格的摇滚蛋糕
6.巧克力蛙
7.姜蝾螈
8.我讨厌甜食
线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:8
【问题讨论】:
-
目前发生了什么?你有什么具体问题?您采取了哪些步骤来调试/推理问题?什么是问题?
-
您的迭代在
rowQ == question.length处停止,您将遇到越界异常。你所有的迭代。将迭代检查从<=更改为<应该可以工作。当然,在rowS <= rowS处修复那个无限循环 -
您对第 3 行和第 4 行的行和列索引的工作方式感到困惑。
-
有效的数组索引是
0到array.length - 1- 在rowQ <= questions.length和rowS <= rowS中丢失=是一个无限循环。并在所有这些测试中丢失=。