【发布时间】: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,将最后一个数字(功率输出?)解析为Double或BigDecimal。然后构建一个包含这两个数据点的对象列表,例如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 中所需的聚合。