我已经到处寻找这个问题的答案,我还没有看到任何关于它的具体说明。
我已经编写了一个数组列表的数组列表,我需要递增所有子列表以获取列表中的所有其他元素。这与我到目前为止的情况一样接近:
ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
int sz1=0; // how many questions in the new string array
int ctr=0; // increment through Question to set value of index
String [] Question = new String[sz1];
for(int x=0; x < list.size(); x++){
sz1 = ((list.get(x).size() -1) / 2);
for(int y=0; y < list.get(x).size(); y++){
if ((y == 1) || (y % 2 == 1)){
Question[ctr] = list.get(x).get(y); // throws Out of Bounds Exception: 0
ctr++ // add 1 for the next index
}
}
}
我认为这可能与内循环有关,但我几个小时都无法弄清楚。我猜问题是内循环调用的是大小而不是索引,但我不确定如何为二维数组列表更正它。
所以最终,我试图将父数组列表的每个子数组列表中的所有其他字符串存储到一个新的字符串数组中。
提前感谢您提供的任何帮助。
更新 非常感谢迄今为止的输入,这是我为此拥有的所有代码。为了尝试回答提出的一些问题,据我所知,该列表似乎正确填充。此外,“列表数组”的输入是一个文本文件。每个“类别”的第一行是类别名称,然后是问题和答案。每个类别由一个空行分隔。即:类别问题答案
新品类……
我已经弄清楚了所有这些,所以现在我需要在自己的数组列表中获取每个问题和答案(正如@icyitscold 指出的,谢谢),我试图通过只显示我正在处理的循环来保持简单,但它可能最好展示所有这些,这样你就可以看到发生了什么(正如@Dukeling 指出的那样。)。
所以这里是代码:
`public void Read_File() throws FileNotFoundException{
File infile = new File("trivia.txt");
String line = "";
Scanner sr = new Scanner(infile);
int i=0;
ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>();
ArrayList<String> question = new ArrayList<String>();
while (sr.hasNext()){
i++;
list.add(new ArrayList<String>());
while (sr.hasNext()){ // Reads one whole category
line = sr.nextLine();
//System.out.println(line);
if (line.length() == 0)
{break;}
list.get(i-1).add(line); // add line to the array list in that position
}
System.out.println(list);
}
String [] catName = new String[6];
for(int x=0; x < list.size(); x++){ // category array
catName[x] = list.get(x).get(0);}
for(int x=0; x < list.size(); x++){ // questions array
for(int y=0; y < list.get(x).size(); y++){
if ((y == 1) || (y % 2 == 1)){
question.add(list.get(x).get(y)); // throws OB of 0
}
}
}
System.out.println(question);
sr.close();
}`