方法不返回用户(继承)

时间:2014-12-18 07:10:17

标签: java inheritance hashmap java.util.scanner method-call

我正在尝试将值从驱动程序读取到HashMap到单独的abstract程序。之后,我希望将内容打印给用户。但是,当我调用该方法时没有任何反应

GameDriver

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

public class GameDriver {

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

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

            if (s.equalsIgnoreCase("r")) { 
                Hero c2 = new Cop();
                String cn = input.next();
                int pts = input.nextInt();
                c2.newMap.put(cn, pts);
                c2.rescue();
                System.out.println(c2);
            }

        }

    }
}

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<String, Integer> newMap = new HashMap<String, Integer>();

   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 " rescued " + newMap + "pts!";
   }

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

   }
}

驱动程序在.txt文件中读取的是一个示例

.TXT

c h Rick Grimes//create hero
r Carl 100 //rescue name and point value

最后我的输出与所需的输出

当前输出

Rick Grimes
Rick Grimes

所需输出

Rick Grimes
Rick Grimes rescued Carl 100pts!

感谢任何帮助过的人!询问您是否需要任何澄清

编辑Cop.java

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

public class Cop extends Hero {
   public Cop() {
         super();
   }
   public void hero1(String newhero) {
          newhero = getHeroName(); //get name from the Hero class
   }
   public void lieDetect() { //unique ability for cops
          System.out.println("Cops can tell the good from the bad");
   }
}

1 个答案:

答案 0 :(得分:1)

在GameDriver中:

if (s.equalsIgnoreCase("h")) { 
    Hero c1 = new Cop();
    System.out.println(c1.getHeroName()); 
}

英雄级的救援方法:

public String rescue() { //class to rescue people or things
       String toReturn = "";
       for(String _key : newMap.keySet()) {
           toReturn += " rescued " + _key + " " + newMap.get(_key) + "pts!";
       }
       return toReturn;
   }

我获得了所需的输出。