gpt4 book ai didi

java - ArrayList 的 ArrayList 的 ArrayList 检索不正确

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:50 28 4
gpt4 key购买 nike

我正在创建一个 ArrayList of ArrayList of ArrayList 的 ArrayList 并按以下方式填充它。它正确地填充它。我已经通过调试和 println 弄清楚了这一点。但是,当我尝试检索这些整数时,它无法正常工作,并显示我为 ArrayList 变量的所有值读取的文件中的最后一个整数。

下面是我填充的代码,它运行良好。

    Scanner sc = new Scanner(new File("e1.txt"));
Scanner lineSc;
String lineStr;


String lineRegEx = "(\\d+),(\\d+)";
Pattern linePattern = Pattern.compile(lineRegEx);
Matcher matcher;

Integer vertex = 0, edge = 0, length = 0;
String strE, strL ;
ArrayList<Integer> tmpLE = new ArrayList<Integer>() ;
ArrayList<ArrayList<Integer>> singleV = new ArrayList<ArrayList<Integer>>() ;

sc.useDelimiter("\\n");


int i = 0, j = 0;
while (sc.hasNextLine()) {
lineStr = sc.nextLine();
lineSc = new Scanner(lineStr);

lineSc.nextInt();

matcher = linePattern.matcher(lineStr);

while (matcher.find()) {
strE = matcher.group(1);
edge = Integer.parseInt(strE);
tmpLE.add(EI, edge);
strL = matcher.group(2);
length = Integer.parseInt(strL);
tmpLE.add(LI, length);

singleV.add(j ,tmpLE);
graph.add(i, singleV);
//System.out.println (graph.get(i).get(j).get(0));
//System.out.println (graph.get(i).get(j).get(1));
++j;
}
j = 0;
++i;
lineSc.close();
}
sc.close();

}

这是我用来检索的代码,但效果不佳

    for (int i = 0; i < N; ++i) {
Integer minLen = graph.get(i).get(0).get(LI);
System.out.println (minLen);
Integer choosenEdge = 0;
for (int j = 0; j < graph.get(i).size(); ++j) {
ArrayList<Integer> tmpArr = graph.get(i).get(j);
System.out.print(tmpArr.get(LI) + " " + minLen); //Wrong Output
if (minLen > tmpArr.get(LI))
{
minLen = tmpArr.get(LI);
choosenEdge = graph.get(i).get(j).get(EI);
System.out.println (choosenEdge); // Wrong Output
}

}

}

最佳答案

您需要创建ArrayList<Integer>对于每个 matcher.find()循环。

 tmpLE = new ArrayList<Integer>() ;
strE = matcher.group(1);
edge = Integer.parseInt(strE);
tmpLE.add(EI, edge);
strL = matcher.group(2);
length = Integer.parseInt(strL);
tmpLE.add(LI, length);

singleV.add(j ,tmpLE);
graph.add(i, singleV);

关于java - ArrayList 的 ArrayList 的 ArrayList 检索不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11608635/

28 4 0