Skip to Main Content

New to Java

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

hashMap is returning Null Key

562805Nov 12 2010 — edited Nov 12 2010
Hi,

this is my requirement

This program takes, as a single input, the name of a particular animal. The program should print out the animal’s name as well as a list of noises, or sounds, that this particular animal could make. Determine what, if anything should be modified in order to make this program work.

and here is the program
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class AnimalNoisesTest {
	
	public static Map<Animal, List<Noise>> animalNoises;
	
	public AnimalNoisesTest(){
		
		animalNoises = new HashMap<Animal, List<Noise>>();
		
		List noises = new ArrayList<Noise>();
		noises.add(new Noise("bark"));
		noises.add(new Noise("woof"));
				
		animalNoises.put(new Animal("dog"), noises);
		
		noises.clear();
		noises.add(new Noise("meow"));
		noises.add(new Noise("hiss"));
		noises.add(new Noise("purr"));

		animalNoises.put(new Animal("cat"), noises);
		
		*System.out.println("key: " + animalNoises.get("cat"));*
		
		
		}

	/**
	 * @param args
	 * @return 
	 */
	public static void main(String[] args) {
		String animal = args[0];
		
		AnimalNoisesTest animalNoisesTest = new AnimalNoisesTest();
		
		System.out.println("animalNoisesTest: " + animalNoisesTest.animalNoises.size());
		
		*if( animalNoisesTest.animalNoises.containsKey(animal)){*
			List<Noise> noises = animalNoisesTest.animalNoises.get(animal);
		
	
	for( Noise obj: noises ){
			
			System.out.println("A " + animal + "says " + ((Noise)obj).getNoise() + ".");
		}
		}
	}
	
	public class Animal{
		private String anAnimal;
		public Animal(String animalName){
			this.anAnimal = animalName;
		}
	}
	
	public class Noise{
		private String aNoise;
		
		public Noise(String noise){
			this.aNoise = noise;
		}
		
		public String getNoise(){
			return aNoise;
		}
		
		public void setNoise(String noise){
			this.aNoise = noise;
		}
	}
}
Edited by: qasitouch on Nov 12, 2010 9:34 AM

Edited by: qasitouch on Nov 12, 2010 9:36 AM

Edited by: qasitouch on Nov 12, 2010 9:44 AM
This post has been answered by 796440 on Nov 12 2010
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 10 2010
Added on Nov 12 2010
14 comments
132 views