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

时间:2014-12-17 04:54:09

标签: java inheritance hashmap java.util.scanner abstract

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

据我所知,一种方法是初始化Cop.java,如此,

Cop N = new Cop();

然后执行方法调用

N.rescue();

添加读入值的正确方法是什么?我可以使用与那个类似的解决方案吗?我想让String cn存储在地图nameint pts中以存储在下面的points中。感谢您的所有答案,如果您需要任何澄清,请告诉我。我会发布我的GameDriver.java代码以及我的Hero.java代码谢谢!!

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();}

         }

  }
}

Hero.java

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;

   }
}

总体目标

我意识到我没有添加到我的总体目标中:目的是在一个文件中读取以创建一个新的英雄(通常只有一个)并让他们在这个假想的游戏中保存多个人/事物。例如,如果文件说

c h Rick Grimes //create hero
r Carl 100 //rescue for x amount of points

我希望将数据存储在地图或其他内容中并输出如下:

Rick Grimes
Rick Grimes rescued Carl for 100 points!

还要注意这一切都必须通过继承来完成

0 个答案:

没有答案