我正在尝试制作一个Java程序,它根据价格对不同类型的自行车进行分类。为此,我有一个包含两种不同类型自行车的文件:山地自行车和赛车。它们都可以是绿色或蓝色。它具有以下格式:
Blue Racing:
Price: 300
Topspeed: 50
Green Mountain:
price: 400
Topspeed: 30
Blue Mountain:
Price: 150
Topspeed: 20
Green Racing:
Topspeed: 50
price: 750
对这些自行车进行排序,我创建了一个父类“Bike”,有一个子类“RaceBike”和一个子类“MountainBike”。这个类有一个扫描方法。该方法扫描自行车的类型,并根据扫描的自行车类型调用其中一个子类的扫描方法。
所有扫描仪方法都必须如下所示:
public static Bike scanner(Scanner scan);
但是,例如,一旦在父类中扫描到“Blue Racing”,子类的 Scanner 方法中的 Scanner 就无法再访问这些单词,但这是确定颜色的必要条件。新自行车。
所以我的问题是,扫描文件后如何仍然访问文件中的单词?
不幸的是,由于我的大学规定,我无法显示任何代码。不过,我可以编写一些伪代码以使其更加清晰:
public static Bike scanner(Scanner scan){
scan first word;
scan second word;
if second word equals racing
return racingbike.scanner(scan)
else
return mountainbike.scanner(scan)
}
public static RacingBike scanner(Scanner scan){
String color = scan first word //The color
scan second word //kind of bike
scan third word
int price = scan first number // price
return a new Racingbike, with attributes color and price
}
像上面的示例一样实现它是不可能的,因为无法再在 RacingBike 扫描仪方法中访问颜色。所以我必须找到一种方法仍然能够访问它。
我无法更改方法的返回类型和参数。
谢谢。
最佳答案
您不应该将扫描器传递给工厂方法(或构造函数),因为它将您获取值的方式与值的用户耦合起来。
编写代码来解析文件并处理文件中值的顺序和类型。让它远离任何使用从文件中解析的字符串和整数的东西。
通过将字符串和整数(可能还有枚举)传递给构造函数,可以使测试变得更加容易,并且您应该编写大量单元测试。
关于java - Java中如何将扫描后的字符串保留在文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46756496/