【问题标题】:I am trying to read a txt file into an array but get an OutOfBoundsException(0)我正在尝试将 txt 文件读入数组但得到 OutOfBoundsException(0)
【发布时间】:2015-03-10 16:25:41
【问题描述】:
public static double [] loadGravityData( ) throws IOException
{
  File fileName = new File("gravity1.txt");
  Scanner inFile = new Scanner(fileName);

  double [] gravityData = {};
  while(inFile.hasNext())
   {    

   for(int i = 0; i <= gravityData.length; i++)
    {
     gravityData[i] = inFile.nextDouble();

    }

   }  
   inFile.close();

return gravityData;
}

i 部分的重力数据是返回异常的原因。任何帮助将不胜感激。

【问题讨论】:

标签: java arrays indexoutofboundsexception filereader bluej


【解决方案1】:

您应该将数组初始化为与您希望读取的项目数量一样长,然后更改

for(int i = 0; i <= gravityData.length; i++)
...

for(int i = 0; i < gravityData.length; i++)
...

这是因为长度为 n 的数组的元素位于 0,1,...,n-1

如果你计算它们,你可以知道实际上有 n 个元素。

编辑,谢谢特伦戈特

如果你不知道有多少项需要提前阅读,我建议你看看ArrayList,它是一个通用的动态数组类型

【讨论】:

  • 除非您使用并发,否则List(例如ArrayList)会比Vector 更好。
  • @Trengot 你说得对,我有一段时间没有编写 Java 并且已经习惯了 C++ 的向量。已编辑!
  • 我把
  • 其余的也改了吗? (分配数组还是使用 ArrayList?)
【解决方案2】:

你在哪里分配数组? 在 Java 中,数组是固定长度的,它们不会自动扩展。在您的情况下,您应该改用 ArrayList。

此外,您应该将

【讨论】:

  • 另外一部分是错误的原因。其余的应该放在一边。
猜你喜欢
  • 2021-08-12
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-09
  • 2022-06-16
  • 1970-01-01
  • 2012-10-28
相关资源
最近更新 更多