所以,我必须将数组列表插入到特定的文本文档中。 数组列表由用户在案例1中插入,并且运行良好。 当我在没有任何数据的情况下尝试调用案例4时,会创建文件并且它也是空的。 当我使用数组列表执行此操作时,我从catch获取错误消息。 我该如何解决?
这是对函数的调用。
case 4: System.out.println("\nLungimea dintre doua orase alaturate\n");
try{
System.out.println("oabdobasoda");
salvareOras();
}catch (Exception e){
System.out.println("Eroare");
}
这是功能。
public static void salvareOras()
{
for(int i = 0; i<drum.size()-1; i++){
for(int j = 0; i<drum.size(); j++){
if(drum.get(i).getPozitie() > drum.get(j).getPozitie()){
Oras aux = drum.get(i);
drum.add(i, drum.get(j));
drum.add(j, aux);
}
}
}
try {
FileOutputStream fOut = new FileOutputStream("distante.txt");
PrintStream ps = new PrintStream(fOut);
for(int i = 0; i <drum.size()-1; i++){
ps.println("d(" + drum.get(i).getNume()+","+drum.get(i+1).getNume()+")="+distOras(drum.get(i), drum.get(i+1)));
}
ps.close();
fOut.close();
} catch(IOException ex){
System.out.println("Nu s-a putut crea fisierul");
System.exit(1);
}
}
答案 0 :(得分:0)
你在第二轮for循环中犯了一个小错误:
for(int i = 0; i<drum.size()-1; i++){
//specifically on this line here:
for(int j = 0; i<drum.size(); j++){
//^//That is not j
if(drum.get(i).getPozitie() > drum.get(j).getPozitie()){
//that means ^ will throw an IndexOutOfBoundsException
Oras aux = drum.get(i);
drum.add(i, drum.get(j));
drum.add(j, aux);
}
}
}
只需将其更改为:
for(int i = 0; i<drum.size()-1; i++){
for(int j = 0; j<drum.size(); j++){
//^ j
if(drum.get(i).getPozitie() > drum.get(j).getPozitie()){
Oras aux = drum.get(i);
drum.add(i, drum.get(j));
drum.add(j, aux);
}
}
}