【问题标题】:How to read a file and make a new one while editing the output?如何在编辑输出时读取文件并制作新文件?
【发布时间】:2019-05-10 15:35:41
【问题描述】:

我正在尝试这样做:

选项 3:下载统计数据

如果用户选择此选项,程序将创建一个包含以下数据的统计文件:

一个。输出功率从低到高排序
湾。产量最高的一天
C。按月总计
d。所有数据的平均功率输出

统计文件将与输入文件同名,但附加了 _stats.txt。例如,如果输入文件名为 data.txt,则统计文件将命名为 data_stats.txt。

注意:它会在添加 _stats.txt 之前从 data.txt 中删除 .txt。它不会创建名为 data.txt_stats.txt 的文件。您可以使用 String.subString() 方法从文件名中删除最后 4 个字符。

编写一个名为 CreateStatsFile 的方法来完成此任务。选择合适的参数和返回类型。

创建统计文件后,将再次显示主菜单。

我将如何做 A-D?我认为我的循环设置正确。

这是 data.txt 文件中的内容

January 10 2018 236.9
January 11 2018 267.6
January 12 2018 278.1
January 13 2018 246.9
January 14 2018 262.3
January 15 2018 288.6
February 2 2018 199.7
February 3 2018 134.6
February 4 2018 200.8
February 5 2018 198.2
March 9 2018 169.7
March 10 2018 168.3
March 11 2018 179.4

我认为我的循环设置正确

 public static String createStatsFile () throws IOException
{
   File file = new File("data.txt");
   Scanner sc = new Scanner(file);
   while(sc.hasNext())
   {
       System.out.println(sc.);
   }

【问题讨论】:

  • 好吧,你需要解析这些行,例如将月、日和年解析为Date,将最后一个数字(功率输出?)解析为DoubleBigDecimal。然后构建一个包含这两个数据点的对象列表,例如List<StatisticsEntry>。一旦你有了它,你就可以尝试实现 A-D。 - 请注意,这感觉像是要教一两件事,所以需要实施它并做一些研究。
  • 天哪,我不知道该怎么做啊,你说的解析是什么意思?
  • quora.com/What-does-parsing-mean-in-Java - 您基本上将字符串(在您的情况下为行)转换为更可用的数据(在您的情况下为日期和数字)。
  • 好的,我做得对吗?文件 file = new File("data.txt");扫描仪输入 = 新扫描仪(文件); while(input.hasNext()) { 字符串日期 = input.next();双电源输出 = input.nextDouble();
  • No String date = input.next(); 会返回一个字符串,但您实际上有 3 个作为日期。您可以拨打 3 次电话至 input.next() 以获取月、日和年。重新阅读您的需求,您可能不需要实际解析它们。将这 3 个值存储在结果对象中就足够了,并且仅将 month 字段 f 用于 C 中所需的聚合。

标签: java class methods


【解决方案1】:

此类数据结构转换任务理想情况下有 3 个步骤:

  1. 您读取输入并将其转换为内部数据结构。
  2. 如果需要,您可以对数据结构进行一些额外的转换。
  3. 您打印此数据结构。

正如cmets所说,通常(1)最麻烦,它被称为解析

但是,通常在源代码中将这些步骤明确分开会省去很多麻烦。

重要的是:只加载一次解释您的输入文件。 之后,您将其保存在程序内存中,可能作为一些记录集,您可以轻松地随心所欲地处理.

不需要多次解析这个文件。

您的输入数据结构应遵循您输入的结构。 (2) 的主要任务是转换更容易处理 (3) 的数据结构。

(2) 在您的情况下,主要是用聚合结果(平均值、总和等)扩展您的数据结构。

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 1970-01-01
    • 2019-09-02
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    相关资源
    最近更新 更多