java - Java中如何将扫描后的字符串保留在文件中?

标签 java

我正在尝试制作一个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/

相关文章:

java - 如果两个接口(interface)包含相同的默认方法会怎样?

java主机头攻击

java - 如何通过 postman 发送csrf token

java - 使用 CountDownTimer 在特定时间在 Firestore 上设置特定数据

java - 使用 CountDownLatch 测试强制竞争条件导致 java.lang.IllegalMonitorStateException

java - 多模块项目中的 Maven 兄弟依赖问题

java - Apache Wicket BackButton 支持浏览器兼容性问题

java - 组合锁密码

java - Hibernate不使用postgresql在spring boot中自动创建表

java - jflex 中的元音正则表达式