Java 如何从地图的元素创建对象
所以我现在有一个:Java 如何从地图的元素创建对象,java,Java,所以我现在有一个: public static JavaFact register(JavaFact jf){ Scanner input = new Scanner(System.in); Map<String, Activity> activities = new HashMap<String, Activity>(); Map<String, Activity> companyActivities = new HashMap&
public static JavaFact register(JavaFact jf){
Scanner input = new Scanner(System.in);
Map<String, Activity> activities = new HashMap<String, Activity>();
Map<String, Activity> companyActivities = new HashMap<String, Activity>();
activities = jf.getAllActivities //this is just to get all the existent
// activities into the Map activities
System.out.println("How many activities is the user envolved in?");
int count = input.nextInt();
for(int i = 0; i<count; i++){
System.out.println("Insert activity code");
String code = input.nextLine();
Activity a = activities.get(code);
companyAcitivities.put(code, a.clone()); //the error refers to this line
}
}
publicstaticjavafact寄存器(JavaFact jf){
扫描仪输入=新扫描仪(System.in);
映射活动=新的HashMap();
Map companyActivities=new HashMap();
activities=jf.getAllActivities//这只是为了获取所有存在的
//活动进入地图活动
System.out.println(“用户在其中包含了多少活动?”);
int count=input.nextInt();
对于(int i=0;i要避免NullPointerException,请尝试以下方法,其他人在上面的评论中已经推荐了这种方法:
for(int i = 0; i<count; i++){
System.out.println("Insert activity code");
String code = input.nextLine();
Activity a = activities.get(code);
if(a != null) {
companyAcitivities.put(code, a.clone()); //the error refers to this line
}
}
用于(int i=0;i错误指的是哪一行代码?用该信息编辑可能是最后一行?a
为空,很简单。您从一个映射中获取值,其中可能没有用户输入的code
的值。您肯定会问一个与您键入的字符串不存在的活动,因此a为空并给出np。问题是我真的需要将这些活动值存储在companyActivities上……就像所有活动都在一个地图中一样,地图中已经有了所有类型的活动,它向我显示了所有这些活动。为什么它没有得到活动?我可以清楚地在我的屏幕上看到活动有我输入的代码…你能提供你的活动图的字符串表示吗?它用另一种语言表示,但codigo=code,designcao=name,然后它只是说明活动允许推断,然后ax扣减值。我为您找到了一个解决方案。只需将此行input.nextLine();
放在int count=input.nextInt();
和for循环之间。