如何实现输入无效/不存在Zip文件时的提示打印及分支判断?
解决方案
核心得看你BuyerProcessor类里readBuyerFile()方法的设计逻辑,分三种常见场景处理:
场景1:readBuyerFile返回布尔值(成功true/失败false)
如果这个方法本身设计为读取成功返回true,文件不存在或格式错误时返回false,直接拿返回值当if判断条件就行:
import java.io.IOException; import java.util.Scanner; public class Buyer2App { public static void main(String[] args) throws IOException { BuyerProcessor object = new BuyerProcessor(); Scanner in = new Scanner(System.in); // 接收文件读取结果 boolean isFileValid = object.readBuyerFile(in.nextLine()); if (isFileValid) { System.out.print(object.generateReport()); System.out.print(object.generateReportByName()); System.out.print(object.generateReportByTotalPurchases()); } else { System.out.println("File name expected.\n" + "Program ending."); } } }
场景2:readBuyerFile读取失败会抛出IOException
如果这个方法遇到无效文件时会抛出IOException,那不能直接用if判断,得用try-catch捕获异常——因为你原来的main方法直接抛出异常的话,程序会直接崩溃,走不到else分支:
import java.io.IOException; import java.util.Scanner; public class Buyer2App { public static void main(String[] args) { BuyerProcessor object = new BuyerProcessor(); Scanner in = new Scanner(System.in); try { object.readBuyerFile(in.nextLine()); // 走到这里说明读取成功,执行打印逻辑 System.out.print(object.generateReport()); System.out.print(object.generateReportByName()); System.out.print(object.generateReportByTotalPurchases()); } catch (IOException e) { // 捕获到异常说明文件无效,执行错误提示 System.out.println("File name expected.\n" + "Program ending."); } } }
场景3:BuyerProcessor有状态标记变量
如果你的BuyerProcessor类里专门维护了一个标记(比如isFileLoaded),文件读取成功后设为true,失败则为false,直接判断这个变量即可:
import java.io.IOException; import java.util.Scanner; public class Buyer2App { public static void main(String[] args) throws IOException { BuyerProcessor object = new BuyerProcessor(); Scanner in = new Scanner(System.in); object.readBuyerFile(in.nextLine()); // 假设BuyerProcessor提供了获取状态的方法 if (object.isFileLoaded()) { System.out.print(object.generateReport()); System.out.print(object.generateReportByName()); System.out.print(object.generateReportByTotalPurchases()); } else { System.out.println("File name expected.\n" + "Program ending."); } } }
额外提示
你原来的错误提示写的是"File name expected as command line argument.",但代码里是用Scanner读取控制台输入,不是命令行参数,记得改成你需要的"File name expected.\n" + "Program ending."。
内容的提问来源于stack exchange,提问作者Halopez800
相关产品推荐
相关产品推荐

