Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java文件I/O验证文件内容,然后使用这些内容创建销售报告_Java_File Io - Fatal编程技术网

Java文件I/O验证文件内容,然后使用这些内容创建销售报告

Java文件I/O验证文件内容,然后使用这些内容创建销售报告,java,file-io,Java,File Io,我正在学习一门Java初级课程,由于某些原因,我最近的作业似乎非常难。作业的重点是文件I/O。它涉及许多部分,但这一部分确实让我感到困惑。它涉及: 读取销售文件,其中每一行都应该有第一个 分区(N、S、E或W),然后是下一行的季度(1-4), 然后在第三行显示销售金额,然后重复(可以吗 这可以) 我们必须验证每一行都有一个允许的 选项/文件类型(可以这样做确定) 然后将所有错误转储到错误文件中,并要求用户提供 另一个文件&重复,直到输入文件的格式正确。 (让它工作起来) 一旦格式正确,我们就必须

我正在学习一门Java初级课程,由于某些原因,我最近的作业似乎非常难。作业的重点是文件I/O。它涉及许多部分,但这一部分确实让我感到困惑。它涉及:

  • 读取销售文件,其中每一行都应该有第一个 分区(N、S、E或W),然后是下一行的季度(1-4), 然后在第三行显示销售金额,然后重复(可以吗 这可以)
  • 我们必须验证每一行都有一个允许的 选项/文件类型(可以这样做确定)
  • 然后将所有错误转储到错误文件中,并要求用户提供 另一个文件&重复,直到输入文件的格式正确。 (让它工作起来)
  • 一旦格式正确,我们就必须能够生成 以下格式的销售报告(无法了解我的情况 应该能够收集到这些…
  • 销售报告

    按部门划分的总销售额:
    北$total
    南方$total
    东$total
    西元总数

    按季度划分的总销售额:
    一月至三月$total
    4月至6月$total
    七月至九月$total
    10月至12月总计$

    年终总数:$总数

    一个菜单选项必须是验证文件格式是否正确,然后出现另一个菜单选项以生成销售报告

    注意:我们还不希望使用数组(这是下一个任务)。

     import java.io.*;
     import java.util.Scanner;
    
     public class SalesReporting {
        public static void main(String[] args) throws Exception {
        String inputData;
        String divisionRead;
        int qtrRead;
        double salesRead;
        String filePath;
        String menuChoice;
        File fileName;
        PrintWriter outputErrorLog;
        PrintWriter outputSalesReport;
        Scanner keyboard = new Scanner(System.in);
        Scanner inputFile;
        String overwriteFile;
        Boolean isDataFileError;
        Boolean isValidSalesFile = false;
        Boolean isValidMenuChoice;
        Boolean isToOverwrite = false;
    
        System.out.println("\tHarmway Corporation" +
                "\nQuarterly Sales Report Generator");
    
        do { 
            do {
                isValidMenuChoice = true;
    
                // display main menu options to user & prompt for choice
                System.out.print("\n\tMain Menu" +
                    "\n" +
                    "\n[V]alidate Sales Data");
                // only display generate sales report option if a sales report has been validated
                if (isValidSalesFile) {
                    System.out.print("\n[G]enerate Sales Report");
                }
                System.out.print("\nE[x]it program" +
                    "\n");
    
                System.out.print("\nEnter choice: ");
    
                menuChoice = keyboard.next();
    
                if (!menuChoice.equalsIgnoreCase("v") &&
                    !menuChoice.equalsIgnoreCase("g") &&
                    !menuChoice.equalsIgnoreCase("x")) {
                    isValidMenuChoice = false;
                    System.out.print("\n\t**Error** - Invalid menu item");
                }
            } while (isValidMenuChoice == false);
    
            if (menuChoice.equalsIgnoreCase("v")) {
                do {
                    // prompt user for the sales data file path
                    System.out.print("\nSales data file path: ");
                    filePath = keyboard.next();
    
                    fileName = new File(filePath);
    
                    // if the file path doesn't exist, error displayed
                    if (!fileName.exists()) {
                        System.out.println("\n" + fileName + " not found");
                    }
                } while (!fileName.exists());
    
                // create a scanner for the input file
                inputFile = new Scanner(fileName);
    
                // create an error log to dump invalid sales data errors to
                fileName = new File("errorlog.txt");
                outputErrorLog = new PrintWriter(fileName);
    
                // resets boolean to allow for error free data file check
                isDataFileError = false;
    
                // validate and store the sales data
                while (inputFile.hasNext())
                {
                    // first line must be division N, S, E or W to be valid
                    inputData = inputFile.next();
                    try 
                    {
                        divisionRead = inputData;
    
                        if (isValidDivision(divisionRead)) {
                            System.out.println("ok division");
                        }
    
                        else 
                        {
                            isDataFileError = true;
                            outputErrorLog.println(divisionRead + ",Invalid division value");
                        }
                    } 
                    catch (Exception e) 
                    {
                        isDataFileError = true;
                        outputErrorLog.println(inputData + ",Invalid division value");
                    }
    
                    // if second line is a valid quarter
                    inputData = inputFile.next();
                    try 
                    {
                        qtrRead = Integer.parseInt(inputData);
    
                        if (isValidQuarter(qtrRead)) {
                            System.out.println("ok quarter");
                        }
    
                        else
                        {
                            isDataFileError = true;
                            outputErrorLog.println(qtrRead + ",Invalid quarter value");
                        }
                    } 
                    catch (Exception e) 
                    {
                        isDataFileError = true;
                        outputErrorLog.println(inputData + ",Invalid quarter value");
                    }
    
                    inputData = inputFile.next();
                    try 
                    {
                        salesRead = Double.parseDouble(inputData);  
    
                        if (isValidSales(salesRead)) {
                            System.out.println("ok sales");
                        }
    
                        else
                        {
                            isDataFileError = true;
                            outputErrorLog.println(salesRead + ",Invalid sales amount value");
                        }
                    } 
                    catch (Exception e) 
                    {
                        isDataFileError = true;
                        outputErrorLog.println(inputData + ",Invalid sales amount value");
                    }
    
    
                }
    
    
                // close the input sales data file
                inputFile.close();
    
                // close the error log file to write
                outputErrorLog.close();
    
                if (isDataFileError)
                {
                    // there was an error in the sales file; not a valid sales data file
                    isValidSalesFile = false;
                    System.out.print("\nThe data file contains data errors"
                        + " (See error log for details)");
                }
                else
                {
                    // there were no errors; valid sales data file
                    isValidSalesFile = true;
                    System.out.print("\nThe data file is validated");
                }
            }
    
            if (menuChoice.equalsIgnoreCase("g")) {
                System.out.println("\ntemp g");
    
                do {
                    // prompt user for file path to save sales report
                    System.out.print("\nSave report as: ");
                    filePath = keyboard.next();
    
                    // identify file to be used
                    fileName = new File(filePath);
    
    
                    // file already exists; ask whether to overwrite file or not
                    if (fileName.exists())
                    {
                        do 
                        {
                            System.out.print("\nOverwrite (y/n): ");
                            overwriteFile = keyboard.next();
    
                            if (overwriteFile.equalsIgnoreCase("y"))
                            {
                                isToOverwrite = true;
    
                                // create printwriter for the sales data file
                                outputSalesReport = new PrintWriter(filePath);
    
                                System.out.println("\nGenerating sales report...");
    
    
    
                                // add code to write to the results to the file
    
    
    
    
    
                                // close sales report
                                outputSalesReport.close();
    
                                System.out.println("\nReport generated successfully!"); 
                            }
    
                        } while (!overwriteFile.equalsIgnoreCase("n") &&
                                !overwriteFile.equalsIgnoreCase("y"));
                    }
                    // file doesn't already exist; save the file
                    else if (!fileName.exists())
                    {
                        // create printwriter for the sales data file
                        outputSalesReport = new PrintWriter(filePath);
    
                        System.out.println("\nGenerating sales report...");
    
    
    
                        // add code to write to the results to the file
    
    
    
    
    
                        // close sales report
                        outputSalesReport.close();
    
                        System.out.println("\nReport generated successfully!");
                    }   
                } while (!isToOverwrite);
    
    
            }
    
            if (menuChoice.equalsIgnoreCase("x")) {
                System.out.println("\nProgram has been terminated.");
                System.exit(0);
            }
    
        } while (!menuChoice.equalsIgnoreCase("x"));
    
    }
    
    
    
    public static boolean isValidDivision(String divisionRead) {
        if (divisionRead.equalsIgnoreCase("N") ||
                divisionRead.equalsIgnoreCase("S") ||
                divisionRead.equalsIgnoreCase("E") ||
                divisionRead.equalsIgnoreCase("W")) {
            return true;
        }
    
        else {
            return false;
        }
    }
    
    public static boolean isValidQuarter(int qtrRead) {
        if (qtrRead >= 1 && qtrRead <= 4) {
            return true;
        }
    
        else {
            return false;
        }
    }
    
    public static boolean isValidSales(double salesRead) {
        if (salesRead >= 0) {
            return true;
        }
    
        else {
            return false;
        }
    }
    }
    
    import java.io.*;
    导入java.util.Scanner;
    公共类销售报告{
    公共静态void main(字符串[]args)引发异常{
    字符串输入数据;
    字符串读取;
    int-qtrRead;
    双重销售阅读;
    字符串文件路径;
    字符串菜单;
    文件名;
    PrintWriter输出日志;
    PrintWriter outputSalesReport;
    扫描仪键盘=新扫描仪(System.in);
    扫描仪输入文件;
    字符串覆盖文件;
    布尔isDataFileError;
    布尔值isValidSalesFile=false;
    布尔isValidMenuChoice;
    布尔值=假;
    System.out.println(“\tHarmway公司”+
    “\n快速销售报告生成器”);
    做{
    做{
    isValidMenuChoice=true;
    //向用户显示主菜单选项并提示选择
    System.out.print(“\n\t主菜单”+
    “\n”+
    “\n[V]验证销售数据”);
    //仅当已验证销售报告时才显示生成销售报告选项
    如果(isValidSalesFile){
    系统输出打印(“\n[G]生成销售报告”);
    }
    System.out.print(“\nE[x]it程序”+
    “\n”);
    系统输出打印(“\n输入选项:”);
    menuChoice=keyboard.next();
    如果(!menuChoice.equalsIgnoreCase(“v”)&&
    !menuChoice.equalsIgnoreCase(“g”)&&
    !menuChoice.equalsIgnoreCase(“x”)){
    isValidMenuChoice=false;
    System.out.print(“\n\t**错误**-无效菜单项”);
    }
    }while(isValidMenuChoice==false);
    if(menuChoice.equalsIgnoreCase(“v”)){
    做{
    //提示用户输入销售数据文件路径
    System.out.print(“\n销售数据文件路径:”);
    filePath=keyboard.next();
    fileName=新文件(filePath);
    //如果文件路径不存在,则显示错误
    如果(!fileName.exists()){
    System.out.println(“\n”+文件名+”未找到“);
    }
    }而(!fileName.exists());
    //为输入文件创建扫描仪
    inputFile=新扫描仪(文件名);
    //创建错误日志以将无效的销售数据错误转储到
    fileName=新文件(“errorlog.txt”);
    outputErrorLog=新的PrintWriter(文件名);
    //重置布尔值以允许无错误的数据文件检查
    isDataFileError=false;
    //验证并存储销售数据
    while(inputFile.hasNext())
    {
    //第一行必须是N、S、E或W部分才能有效
    inputData=inputFile.next();
    尝试
    {
    分区读取=输入数据;
    if(IsValidVision(分区读取)){
    System.out.println(“ok部门”);
    }
    其他的
    {
    isDataFileError=true;
    outputErrorLog.println(divisionRead+“,无效的除法值”);
    }
    } 
    捕获(例外e)
    {
    isDataFileError=true;
    println(inputData+“,无效的除法值”);
    }
    //如果第二行是有效的四分之一
    inputData=inputFile.next();
    尝试
    {
    qtrRead=Integer.parseInt(inputData);
    如果(isValidQuarter(qtrRead)){
    系统输出打印项次(“正常季度”);
    }
    其他的
    {
    isDataFileError=true;
    outputErrorLog.println(qtrRead+“,无效的季度值”);
    }
    } 
    捕获(例外e)
    {
    isDataFileError=true;
    outputErrorLog.println(inputData+“,无效的季度值”);
    }
    inputData=inputFile.next();
    尝试
    {
    salesRead=Double.parseDouble(inputData);
    if(isValidSales(salesRead)){
    System.out.prin
    
    String.format("%s:%s",strDivision, doubleAmount);