【问题标题】:Assigning text file to array将文本文件分配给数组
【发布时间】:2012-10-09 14:41:00
【问题描述】:

我要做的是从文本值中获取值,然后将它们放入双精度数组中。这就是我所拥有的,但它并没有实现我的目标,而是打印出我不想要的东西。我不能在这里使用数组列表,只能使用数组。

这是文本文件中的内容:70.3 70.8 73.8 77.0 80.7 83.4 84.5 84.4 83.4 80.2 76.3 72.0

代码:

    Scanner temperatureFile = new Scanner(new File("KeyWestTemp.txt"));
    double [] temperature = new double[12];

    while(temperatureFile.hasNext())
    {
        temperature[index] = temperatureFile.nextDouble();
        index++;
    }

【问题讨论】:

  • 确保将index 初始化为零。然后通过在 while 循环中打印值来检查您从 Scanner 获得的数字是否正确。

标签: arrays file input while-loop


【解决方案1】:

我认为这是问题所在,但我可能错了:-)

temperature[11] = temperatureFile.nextDouble(); // index?

详细来说,你应该有类似的东西:

i = 0; // index 'runner'
while(temperatureFile.hasNext())
{
    temperature[i] = temperatureFile.nextDouble();
    i++;
}

但是,这不是通用的,您应该在声明数组大小之前对大小进行估计。

【讨论】:

  • 啊,我忘记了那部分,但是当我使用 index 并每次将其递增 1 时,它仍然无法正确显示。
  • 出于某种原因,我的输出是“[D@81b1fb”。真的很奇怪
  • 从您在此处的评论来看,您打印的是地址而不是值。确保使用正确的索引打印双精度。如果您遇到困难,请让我看看您的打印代码。
【解决方案2】:

Reut 的想法是正确的。您只分配给温度数组的最后一个元素。试试:

for (int i = 0; temperatureFile.hasNext() && (i < 12); i++) {
    temperature[i] = temperatureFile.nextDouble();
}

【讨论】:

  • 这有帮助,但由于某种原因,我在输出时得到了这个。 “[D@81b1fb”。那个随机的字符串不是我想要的。
猜你喜欢
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-04
相关资源
最近更新 更多