如何将用户输入行从输入文件打印到输出文件

时间:2019-05-12 16:52:04

标签: java arrays class methods

我正尝试从以下位置执行#4:

程序输入:

您的程序将向用户显示欢迎消息和选项菜单,供用户选择。

欢迎来到电厂分析仪程序。请从以下选项中选择:

1.  Upload data 
2.  View data 
3.  Download statistics 
4.  Print Month 
5.  Exit the program 

设计

您需要首先实现一个名为Entry的类,该类存储以下信息:

•   Month name
•   Day
•   Year
•   Power output

添加合适的方法。

程序选项

选项1:上传数据

如果用户选择此选项,程序将
一种。提示用户输入包含数据的文件。 b。将记录读入数组或ArrayList

输入文件格式:

月日年输出

样本输入文件:

January 10 2018 236.9 
January 11 2018 267.6 
January 12 2018 278.1 

编写一个名为UploadData的方法来执行此任务。选择适当的参数和返回类型。

读完文件后,将再次显示主菜单。

选项2:查看数据

如果用户选择此选项,程序将在屏幕上打印读取的数据。

示例输出:

Date: January 10, 2018 Output: 236.9 
Date: January 11, 2018 Output: 267.6 
Date: January 12, 2018 Output: 278.1 

编写一个称为PrintData的方法来执行此任务。选择适当的参数和返回类型。

完成打印后,将再次显示主菜单。

选项3:下载统计信息

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

a.  Power output sorted from lowest to highest
b.  Day with highest output 
c.  Total by month 
d.  Average power output for all the data

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

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

编写一个称为CreateStatsFile的方法来执行此任务。选择适当的参数和返回类型。

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

选项4:打印月份

如果用户选择此选项,程序将要求输入月份的名称并进行搜索。它将显示该月的所有数据。如果没有可用数据,则应显示适当的方法。

编写一个称为PrintMonth的方法来执行此任务。选择适当的参数和返回类型。

完成搜索后,将再次显示主菜单

我认为我已经正确设置了我的框架代码,但是现在我该如何处理。

public static String printMonth(ArrayList<Entry> MonthList) throws /*what?*/ {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("What is the month's name?");
    String month = keyboard.nextLine();

    for (int i = 0; i < MonthList.size(); i++)
        MonthList.get(i).print();

    Scanner fileIn = new Scanner(new File("data.txt"));
    fileIn.nextLine();
    if (fileIn.hasNext("January")) {

    }

    return month;
}

1 个答案:

答案 0 :(得分:1)

通过迭代列表来检查数据中是否有月份。

public static String printMonth(ArrayList<Entry> uploadResult) throws /*what?*/ {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("What is the month's name?");
    String month = keyboard.nextLine(); 
    boolean monthPresent = false;
    for (Entry uploadResult : uploadResults) {
        if ( uploadResult.getMonth().equals(month)){
            monthPresent = true;
            System.out.println(uploadResult.getDay() + "--" + uploadResult.getPowerOutput());
        }

        if( !monthPresent ){
            System.out.println("Month info not available");
        }
    }
}