kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 nick
nick
Question

Bagaimana saya bisa mengiterasi elemen-elemen di Hashmap?

Saya ingin membuat game Java. Mula-mula program meminta jumlah pemain; setelah itu, program meminta nama-nama mereka. Saya menaruh nama-nama mereka dalam sebuah HashMap dengan ID dan skor mereka. Di akhir permainan saya menghitung skor dan saya ingin memasukkannya ke dalam HashMap (skor spesifik untuk nama tertentu). Apakah ada yang tahu bagaimana melakukan ini? Ini adalah kode saya:

Pemain:

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

utama:

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");

      }

Apakah ada yang tahu bagaimana saya akhirnya bisa mencetak misalnya:

"The player Nick has 10 points.
 The player Mary has 0 points."  

Update:

Saya melakukan ini di utama (seperti yang disarankan Jigar Joshi)

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

}

dan mencetak "Skor :0 Nama : a Skor :4 Nama : a" ketika saya menaruh dua nama pemain "a" dan "b" Saya pikir masalahnya ada di sini

 name.put(k,new Player(name1.getName(),scr));

Bagaimana saya bisa meletakkan nama-nama di "names_of_players" dari for saya sebelumnya?

25 2011-12-27T11:33:09+00:00 3
 dopatraman
dopatraman
Pertanyaan edit 26 Oktober 2016 в 10:43
Pemrograman
java
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
Jigar Joshi
Jigar Joshi
27 Desember 2011 в 11:35
2011-12-27T11:35:20+00:00
Lebih
Sumber
Sunting
#15057177

Perlu Kunci &; Nilai dalam Iterasi

Gunakan entrySet() untuk mengiterasi melalui Map dan perlu mengakses nilai dan kunci:

Map<String, Person> hm = new HashMap<String, Person>();

hm.put("A", new Person("p1"));
hm.put("B", new Person("p2"));
hm.put("C", new Person("p3"));
hm.put("D", new Person("p4"));
hm.put("E", new Person("p5"));

Set<Map.Entry<String, Person>> set = hm.entrySet();

for (Map.Entry<String, Person> me : set) {
  System.out.println("Key :"+me.getKey() +" Name : "+ me.getValue().getName()+"Age :"+me.getValue().getAge());

}

Perlu Kunci dalam Iterasi

Jika Anda hanya ingin mengiterasi kunci dari peta, Anda dapat menggunakan keySet()

for(String key: map.keySet()) {
     Person value = map.get(key); 
}

Perlu Nilai dalam Iterasi

Jika Anda hanya ingin mengiterasi nilai dari peta, Anda dapat menggunakan nilai()

for(Person person: map.values()) {

}
Dmitry Minkovsky
Dmitry Minkovsky
Jawaban edit 14 April 2015 в 2:10
49
0
 AlexR
AlexR
27 Desember 2011 в 11:38
2011-12-27T11:38:13+00:00
Lebih
Sumber
Sunting
#15057178

Anda tidak boleh memetakan skor ke pemain. Anda harus memetakan pemain (atau namanya) ke skor:

Map<Player, Integer> player2score = new HashMap<Player, Integer>();

Kemudian tambahkan pemain ke peta: int score = .... Pemain pemain = Pemain baru(); player.setName("John"); // dll. player2score.put(player, score);

Dalam hal ini tugasnya sepele:

int score = player2score.get(player);

3
0
Peter Lawrey
Peter Lawrey
27 Desember 2011 в 11:39
2011-12-27T11:39:45+00:00
Lebih
Sumber
Sunting
#15057179

Karena semua pemain diberi nomor, saya hanya akan menggunakan ArrayList<Player>()

Sesuatu seperti

List<Player> players = new ArrayList<Player>();

System.out.printf("Give the number of the players ");
int number_of_players = scanner.nextInt();
scanner.nextLine(); // discard the rest of the line.

for(int k = 0;k < number_of_players; k++){
     System.out.printf("Give the name of player %d: ", k + 1);
     String name_of_player = scanner.nextLine();
     players.add(new Player(name_of_player,0)); //k=id and 0=score
}

for(Player player: players) {  
    System.out.println("Name of player in this round:" + player.getName());
3
0
Related communities 3
Programmer JAVA indonesia
Programmer JAVA indonesia
1 757 pengguna
Buka telegram
jvmusergroup
jvmusergroup
354 pengguna
Bismillahirrohmanirohim. Perhatian! Grup ini merupakan ekspansi dari grup Forum Java Programmer Indonesia di Facebook. Silahkan berbagi pengalaman dan masalah seputar Java dan keluarganya. https://t.me/JVMIndonesia Admin : @hendisantika34
Buka telegram
Java Indonesia🇲🇨
Java Indonesia🇲🇨
153 pengguna
Programmer Java Indonesia. Grup ini digunakan untuk bertanya terkait materi belajar Java / fullstack Warning=> -dilarang promosi(izin adm -18+🔞 - berbicara sopan - no spam /boot Mohon ikut aturan grup belum di keluarkan
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Daniel Gogov
Terdaftar 2 hari yang lalu
2
工藤 芳則
Terdaftar 1 minggu yang lalu
3
Ирина Беляева
Terdaftar 1 minggu yang lalu
4
Darya Arsenyeva
Terdaftar 2 minggu yang lalu
5
anyta nuam-nuam (LapuSiK)
Terdaftar 2 minggu yang lalu
ID
JA
RU
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi