如何将文件中的数组输入,进行排序并在同一文件中显示输出。

问题描述 投票:0回答:1

我从一个文件 "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();
          }

      }

}

}

java arrays sorting exception user-input
1个回答
0
投票

你的代码的问题是,你打印的是一个数组中的数字。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(); 
© www.soinside.com 2019 - 2024. All rights reserved.