Java 继承:正确初始化以将值存储到HashMap中

Java 继承:正确初始化以将值存储到HashMap中,java,inheritance,hashmap,java.util.scanner,abstract,Java,Inheritance,Hashmap,Java.util.scanner,Abstract,我正在使用不同的程序,一个程序将读取.txt文件,然后同一个程序将读取的值存储到另一个包含HashMap的程序中。包含HashMap的程序名为Hero.java,是一个抽象类。我有一个扩展该程序的程序,名为Cop.java。考虑到这一点,我想知道将从我的GameDriver.java读取的文件传输到HashMap的正确方法 据我所知,一种方法是像这样初始化Cop.java Cop N = new Cop(); 然后执行方法调用 N.rescue(); 添加读入值的正确方法是什么?我可以使用类

我正在使用不同的程序,一个程序将读取
.txt
文件,然后同一个程序将读取的值存储到另一个包含
HashMap
的程序中。包含
HashMap
的程序名为
Hero.java
,是一个
抽象类。我有一个扩展该程序的程序,名为
Cop.java
。考虑到这一点,我想知道将从我的
GameDriver.java
读取的文件传输到
HashMap
的正确方法

据我所知,一种方法是像这样初始化
Cop.java

Cop N = new Cop();
然后执行方法调用

N.rescue();
添加读入值的正确方法是什么?我可以使用类似的解决方案吗?我试图将
字符串cn
存储在地图
名称
中,并将
int pts
存储在下面的
点中。谢谢你的回答,如果你需要任何澄清,请告诉我。我将发布我的
GameDriver.java
code以及我的
Hero.java
code谢谢

GameDriver.java

import java.io.*;
import java.util.*;
import java.awt.*;

public class GameDriver {

  public static void main(String[] args) throws FileNotFoundException {

         Cop N = new Cop();
         String s;
         File f = new File (args[0]);
         Scanner input = new Scanner(f);
         while (input.hasNext()) {
                s = input.next();
                if (s.equalsIgnoreCase("h")) { Character c1 = new Cop();
                                                 System.out.println(c1); }

                if (s.equalsIgnoreCase("r")) { String cn = input.next(); //HashMap name
                                               int pts = input.nextInt(); //HashMap points
                                               N.rescue();}

         }

  }
}
import java.util.*;
import java.io.*;
import java.awt.*;

public abstract class Hero extends Character
{
   private String heroname1;
   public Hero() {
          heroname1 = "Rick Grimes"; //the default player name
   }
   HashMap name = new HashMap<String, GameDriver>();
   HashMap points = new HashMap<Integer, GameDriver>();

   public Hero(String newhero) {
          if (newhero.length() > 0) {
               heroname1 = newhero;
          } else { heroname1 = "Rick Grimes"; } //defaulted as protagonist
   }

   public String getHeroName() {
          return heroname1; //return the name
   }

   public String rescue() { //class to rescue people or things
          return heroname1 + " rescued " + name + " for " + points + "!";
   }

   public String toString() { //print
          return heroname1;

   }
}
Hero.java

import java.io.*;
import java.util.*;
import java.awt.*;

public class GameDriver {

  public static void main(String[] args) throws FileNotFoundException {

         Cop N = new Cop();
         String s;
         File f = new File (args[0]);
         Scanner input = new Scanner(f);
         while (input.hasNext()) {
                s = input.next();
                if (s.equalsIgnoreCase("h")) { Character c1 = new Cop();
                                                 System.out.println(c1); }

                if (s.equalsIgnoreCase("r")) { String cn = input.next(); //HashMap name
                                               int pts = input.nextInt(); //HashMap points
                                               N.rescue();}

         }

  }
}
import java.util.*;
import java.io.*;
import java.awt.*;

public abstract class Hero extends Character
{
   private String heroname1;
   public Hero() {
          heroname1 = "Rick Grimes"; //the default player name
   }
   HashMap name = new HashMap<String, GameDriver>();
   HashMap points = new HashMap<Integer, GameDriver>();

   public Hero(String newhero) {
          if (newhero.length() > 0) {
               heroname1 = newhero;
          } else { heroname1 = "Rick Grimes"; } //defaulted as protagonist
   }

   public String getHeroName() {
          return heroname1; //return the name
   }

   public String rescue() { //class to rescue people or things
          return heroname1 + " rescued " + name + " for " + points + "!";
   }

   public String toString() { //print
          return heroname1;

   }
}
我希望数据存储在地图或其他东西中,并按如下方式输出:

Rick Grimes
Rick Grimes rescued Carl for 100 points!

还要注意的是,这一切都必须通过继承来完成。在我看来,您对
HashMap
的用途及其工作方式非常困惑。请看一些有关地图和布景的信息。您可能需要一个
列表
集合
。另外,
Map
包含多个名称,但您试图在
rescue()
方法中只打印一个名称,对吗?我不知道你想做什么,但有些东西需要改进。嗯,我正在尝试将名称和点值存储到某个东西中,并相应地一起打印出来,例如
你为Carl保存了100分
是的,我以前没有使用过地图,所以如果有更简单的方法,我会非常有兴趣知道,但是您是否希望每个
英雄
都存储多个名称和点?还是只需要一次存储一个?你的问题陈述根本不清楚;恐怕我不能给你太多的帮助,因为我真的不知道你想做什么。我建议你用正确的方法,使用
composition
over
heritation
rescue()
应该有
params
比如
字符串名,int点
并且您应该通过
HashMap newmap=newhashmap()初始化map
//填充哈希映射newmap.put(“hero1”,10);newmap.put(“hero2”,100)//像wise一样
请参见我问题中的总体目标编辑,也许这会有所帮助