我有一个使用Region类对象的方法,因为我需要扫描该对象的另一个方法使用此方法,因此我可以应用该方法。
public void changeBusinessPermitTile(Region region){
if(getRegion()==null) {
Region i;
Scanner scanner = null;
try {
System.out.print("Please insert the region: ");
scanner = new Scanner(System.in);
i = scanner.//this is the missing part
setRegion(i);
} finally {
if (scanner!=null)
scanner.close();
}
}
}
所以我想要的是当我写例如
时Region region1 = new Region(Landscape.COAST);
Region region2 = new Region(Landscape.HILL);
Region region3 = new Region(Landscape.MOUNTAIN);
当我写region1,region2或region3
时,该方法应该能够扫描答案 0 :(得分:1)
您可以将Landscape
视为String
并初始化实例,如
Region r = new Region(Landscape.valueOf(scanner.nextLine()));
此外,您可以创建自己的小池(Map<String, Region>
),其中保留Region
个实例。它看起来像Flyweight pattern。
if (map.get(scanner.nextLine()) == null) {
// create an instance and put it in the map
} else {
// return old value from the map
}
答案 1 :(得分:0)
好的,我想我理解你的问题,简而言之,你试图将Region与String相关联。如果是这样,则规范解决方案是使用Map,例如使用抽象类型Map<String, Region>
,您可能将其实例化为HashMap<String, Region>
。然后,您将使用put(String key, Region value)
方法使用字符串/区域对填充地图,然后使用地图的get(String key)
方法根据键字符串获取区域。
我仍然对您的整体计划设计感到担忧,但这是一个单独的问题。
例如:
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class RegionFun {
public static void main(String[] args) {
Map<String, Region> regionMap = new HashMap<>();
regionMap.put("coast", new Region(Landscape.COAST));
regionMap.put("Hill", new Region(Landscape.HILL));
regionMap.put("mountain", new Region(Landscape.MOUNTAIN));
Scanner scanner = new Scanner(System.in);
System.out.print("Enter location of region: ");
String input = scanner.nextLine().toLowerCase();
Region region = regionMap.get(input);
System.out.println("Selected Region: " + region);
}
}
enum Landscape {
COAST, HILL, MOUNTAIN
}
class Region {
private Landscape landscape;
public Region(Landscape landscape) {
this.landscape = landscape;
}
@Override
public String toString() {
return "Region [landscape=" + landscape + "]";
}
}