Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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中扫描字符串后,如何将其保存在文件中?_Java - Fatal编程技术网

在Java中扫描字符串后,如何将其保存在文件中?

在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 对这些自行车进

我正在尝试制作一个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扫描器方法中使用了。因此,我必须找到一种方法,仍然能够访问它

我无法更改方法的返回类型和参数


谢谢。

您不应该将扫描仪传递给工厂方法(或构造函数),因为它将获取值的方式与值的用户相耦合

编写代码来解析文件并处理文件中值的顺序和类型。让它远离使用从文件解析的字符串和int的任何东西


通过将字符串和int(可能还有枚举)传递给构造函数,您可以使测试更容易,并且您应该编写大量的单元测试。

这实际上就是我正在做的(如果我理解您的意思):例如,为了获得价格,我做了:int price=scan.nextInt()。等等。我认为这很清楚,但我现在将在我的原始问题中对其进行编辑。@JasonMacville不,你不是(我的意思是说工厂方法而不是构造函数)。让我们这样说:不应该有一个同时使用/导入RacingBike和Scanner的类。