我从一个文件 "File.txt "中获取了数组输入(第一个输入是数组的大小(4),接下来的输入是数字,我必须对其进行排序),并对数组进行了排序,但现在我想在同一个文件 "File.txt "中打印排序后的数组a[i]。
到目前为止,我已经完成了这个工作......当我在控制台中从文件 "File.txt "中获取数组输入时,它运行正常,但当我想在同一文件中显示输出时,它说......数组出界异常,我该怎么办?
Scanner sc = new Scanner(f1);
int [] a = new int[sc.nextInt()];
int i;
int j;
for(i=0;i<a.length;i++)
{
a[i] = sc.nextInt();
}
int temp=0;
for(i=0;i<a.length;i++)
{
for(j=0;j<a.length-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
FileWriter fw = null;
BufferedWriter bw = null;
PrintWriter pw = null;
try
{
fw = new FileWriter(f1,true);
bw = new BufferedWriter(fw);
pw = new PrintWriter(bw);
pw.println(a[i]);
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
fw.close();
bw.close();
pw.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
你的代码的问题是,你打印的是一个数组中的数字。a[i]
.你使用以下代码。
for(i=0;i<a.length;i++)
在这个循环之后: i
等于 a.length
. 然后在另一行中你叫
pw.println(a[i]);
输出到文件中。但现在 i
指的是一个超出数组边界的元素,你必须像这样反复输出。
BufferedWriter bw = null;
bw = new BufferedWriter(new FileWriter(f1));
for (int i = 0; i < a.length; i++) {
bw.write(Integer.toString(a[i]);
bw.newLine();
}
bw.flush();
bw.close();