【问题标题】:How to take array input from a file ,sort it and display output in the same file如何从文件中获取数组输入,对其进行排序并在同一文件中显示输出
【发布时间】:2020-08-12 08:59:00
【问题描述】:

我从文件“File.txt”中获取了数组输入(它的第一个输入是数组的大小(4),下一个输入是我必须排序的数字)并对数组进行排序,但现在我想在同一个文件“File.txt”中打印排序后的数组 a[i]

直到现在我已经做到了......当我通过从文件“File.txt”中获取数组输入在控制台中运行它时,它运行正常但是当我想在它说的同一个文件中显示输出时...... .array 越界异常 我怎样才能做到这一点??

    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]
  • 当程序到达pw.println(a[i]) 行时,你认为i 包含什么?另外,那条线不应该在某种循环中吗?
  • 对不起...一个大错误..但是当我使用循环时它仍然显示数组超出范围异常

标签: java arrays sorting exception user-input


【解决方案1】:

您的代码的问题在于您正在打印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(); 

【讨论】:

  • 先生......如果我不使用 bw.flush() 和 bw.close() 会怎样......如果我不使用它实际上不会显示输出使用它们......它的正确用途是什么。
  • 我可以只从文件中的混合字符串和数字中获取数字作为输入吗??
  • @AmitKumar 如果你想在磁盘上有数据,你需要刷新和写入。请参阅:stackoverflow.com/questions/908168/…。如果这解决了您的问题,请将其标记为答案并投票。
猜你喜欢
  • 1970-01-01
  • 2021-05-07
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
相关资源
最近更新 更多