Method not returning to user (inheritance)
I am trying to read values ββin HashMap
from a driver program into a separate program abstract
. After that, I want the content to be printed for the user. However, when I call the method, nothing happens
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();
}
}
Driver reads in .txt file here is an example
.TXT
c h Rick Grimes//create hero
r Carl 100 //rescue name and point value
and finally my output and the desired output
Current output
Rick Grimes
Rick Grimes
Desired result
Rick Grimes
Rick Grimes rescued Carl 100pts!
Thanks to everyone who helps! Ask if you need any clarification.
EDIT 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");
}
}
+3
source to share
1 answer
In GameDriver:
if (s.equalsIgnoreCase("h")) {
Hero c1 = new Cop();
System.out.println(c1.getHeroName());
}
Rescue method in Hero class:
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;
}
And I am getting the desired result.
+1
source to share