【问题标题】:Java iterate through 1D array and 2D arrayJava遍历一维数组和二维数组
【发布时间】: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 处停止,您将遇到越界异常。你所有的迭代。将迭代检查从 &lt;= 更改为 &lt; 应该可以工作。当然,在rowS &lt;= rowS 处修复那个无限循环
  • 您对第 3 行和第 4 行的行和列索引的工作方式感到困惑。
  • 有效的数组索引是0array.length - 1 - 在rowQ &lt;= questions.lengthrowS &lt;= rowS 中丢失= 是一个无限循环。并在所有这些测试中丢失=

标签: java arrays loops


【解决方案1】:

既然你说你的代码不好,我有幸完全重写它,它对我有用:

for (int i = 0 ; i < questions.length ; i++){
    System.out.println(questions[i]);
    for(int j = 0 ; j  < selection[i].length ; j++){
        System.out.println(selection[i][j]);
    }
}

这背后的想法是为每个问题打印出选择数组中与问题数组具有相同索引的所有答案,直到该数组的末尾

【讨论】:

  • 非常感谢,完美!!!!那么 selection[i].length 是如何打印到与问题对应的索引末尾的?如果这有意义的话。
  • 是的 selection[I].length 对应于问题和所有答案/选择的长度
  • 顺便说一句,如果答案回答了您的问题,那么社区签署我的答案作为解决方案将是一件好事。 (这对我也很好:-)因为它提高了我的评分)
猜你喜欢
  • 2013-03-14
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
相关资源
最近更新 更多