Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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,所以我现在有一个: 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循环之间。