gpt4 book ai didi

java - 使用行输入捕获错误/异常的良好设计是什么?

转载 作者:行者123 更新时间:2023-12-02 07:26:28 25 4
gpt4 key购买 nike

我的代码是从 .txt 中读取行并解析这些输入。

输入采用这种形式<operation> <category> <name> <price> <quantity> <weight> <optional field1> <optional field2>

电子产品有 2 个选项字段是易碎品 (F/NF) 以及其运送到的州,杂货有 1 个可选字段易腐烂 (P/NP)。这是行输入的一些示例

insert clothing shirt 20.50 1 1

insert electronics PS3 300 1 5.2 F NM

insert groceries cabbage 2.00 5 1 NP

我正在考虑写一个legalLine()处理输入错误的方法

class sampleClass{
public static void isLegalLine(String lineInput){
Scanner s = new Scanner(lineInput);
String operation = null;
String category = null;
String name = null;
float price = 0;
int quantity = 0;
float weight = 0;
String opt1 = null;
String opt2 = null;
try{
operation = s.next();
category = s.next();
name = s.next();
price = Float.parseFloat(s.next());
quantity = Integer.parseInt(s.next());
weight = Float.parseFloat(s.next());
if (!operation.equalsIgnoreCase("insert")
&& !operation.equalsIgnoreCase("search")
&& !operation.equalsIgnoreCase("delete")
&& !operation.equalsIgnoreCase("update")
&& !operation.equalsIgnoreCase("print")) {
System.out.println("invalid operation");
}
// more validations for variables category, name, price, quantity, weight goes here
if(category.equalsIgnoreCase("electronics")){
try{
opt1 = s.next();
opt1 = s.next();
}catch(Exception e){

}
}else if(category.equalsIgnoreCase("groceries")){
opt1 = s.next();
}
}catch (Exception e){
//general catch for now
e.getMessage();
}
}


public static void main(String[] args)
{
FileReader freader = new FileReader(args[0]);
BufferedReader bfrReader = new BufferedReader(freader);
isLegalLine(bfrReader.readLine());


//program does calculation for total price of input
}

你看...我已经经历了将每个标记设置为其各自变量的所有麻烦 isLegalLine() ,我怎样才能将这些信息传递回 main() ?这是处理输入行错误的良好设计吗?

最佳答案

由于您还需要处理它们,所以我认为一个好的解决方案是:

创建一个包含三个子类的产品类:服装、电子产品和杂货

然后创建你的函数

public static Product isLegalLine(String lineInput)

解析该行后返回产品。

关于java - 使用行输入捕获错误/异常的良好设计是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13521138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com