I want to make a Java game. At first the program asks for the number of the players; after that, it asks for their names. I put their names in a HashMap with an ID and their score. At the end of the game I count the score and I want to put it in the HashMap (the specific score for the specific name). Does anyone know how to do this? This is my code:
Player:
public class Player {
public Player() {
}
public void setScore(int score) {
this.score = score;
}
public void setName(String name) {
this.name = name;
}
private String name;
private int score;
public Player(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Player{" + "name=" + name + "score=" + score + '}';
}
public int getScore() {
return score;
}
main:
Scanner scanner = new Scanner(System.in);
HashMap<Integer,Player> name= new HashMap<Integer,Player>();
System.out.printf("Give the number of the players ");
int number_of_players = scanner.nextInt();
for(int k=1;k<=number_of_players;k++)
{
System.out.printf("Give the name of player %d: ",k);
name_of_players= scanner.nextLine();
name.put(k, new Player(name_of_players,0));//k=id and 0=score
}
//This for finally returns the score and
for(int k=1;k<=number_of_players;k++)
{
Player name1 = name.get(k);
System.out.print("Name of player in this round:"+name1.getName());
..............
.............
int score=p.getScore();
name.put(k,new Player(name1.getName(),scr));//I think here is the problem
for(int n=1;n<=number_of_players;n++)//prints all the players with their score
{
System.out.print("The player"+name1.getName()+" has "+name1.getScore()+"points");
}
Does anyone know how can I finally print for example:
"The player Nick has 10 points.
The player Mary has 0 points."
Update:
I did this in main(as Jigar Joshi suggest)
name.put(k,new Player(name1.getName(),scr));
Set<Map.Entry<Integer, Player>> set = name.entrySet();
for (Map.Entry<Integer, Player> me : set)
{
System.out.println("Score :"+me.getValue().getScore() +" Name:"+me.getValue().getName());
}
and it prints “Score :0 Name : a Score :4 Name : a” when i put two names of players “a” and “b”.I think the problem is here
name.put(k,new Player(name1.getName(),scr));
How can I put the names in “names_of_players” of my previous for?
Need Key & Value in Iteration
Use
entrySet()to iterate throughMapand need to access value and key:Need Key in Iteration
If you want just to iterate over
keysof map you can usekeySet()Need Value in Iteration
If you just want to iterate over
valuesof map you can usevalues()