Array list?? Namenausgabe nach Typ?
Die folgende Anwendung erfasst Namen und Rollen in einem Multiplayer-Game mit fünf Spielern. Spieler haben entweder die Rolle Offender (abgekürzt mit O) oder Invador (abgekürzt mit I). Sowohl Name wie auch Rolle werden über die Konsole eingegeben.
Nach dem alle fünf Spieler erfasst wurden, sollen die Namen der Spieler nach Rollen getrennt auf die Konsole ausgegeben werden.
Zum Speichern der Angaben eines Spielers wird die Klasse Player verwendet. Die Objekte aller Spieler werden in der ArrayList players gespeichert. Die Klasse Player ist bereits vorhanden und muss nicht geändert werden.
Aufgaben:
- Das Einlesen von Namen und Rollen ist bereits vorhanden. Ergänze die Klasse Main um das Speichern der Eingaben in der ArrayList.
- Ergänze die Klasse Main um die Ausgabe der Namen getrennt nach Rollen so wie im Beispiel unten gezeigt.
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ArrayList<Player> players = new ArrayList<Player>();
Scanner keyScan = new Scanner(System.in);
for (int i=0; i<5; i++) {
System.out.print("Name: ");
String name = keyScan.nextLine();
System.out.print("Role (O or I): ");
String role = keyScan.nextLine();
// TODO: Player der ArrayList hinzufügen
}
System.out.println("\nOffenders:");
// TODO: Namen aller Offenders ausgeben
System.out.println("\nInvaders:");
// TODO: Namen aller Invaders ausgebenkeyScan.close();
}
}
----
Muss man nichts mehr machen.
public class Player {
String name;
String role;
public Player(String name, String role) {
this.name = name;
this.role = role;
}
public String getName() {
return name;
}
public String getRole() {
return role;
}
}
Vielen Dank euch für die Hilfe.
1 Antwort
Um die Eingaben in der ArrayList zu speichern, kannst du die add-Methode verwenden, um Player-Objekte der ArrayList hinzuzufügen. Der Code könnte wie folgt aussehen:
players.add(new Player(name, role));
Um die Namen der Spieler nach Rollen getrennt auszugeben, kannst du die ArrayList durchlaufen und für jedes Player-Objekt prüfen, ob die Rolle "O" oder "I" ist. Wenn die Rolle "O" ist, kannst du den Namen des Spielers unter "Offenders" ausgeben, andernfalls kannst du den Namen unter "Invaders" ausgeben. Der Code könnte wie folgt aussehen:
System.out.println("\nOffenders:");
for (Player player : players) {
if (player.getRole().equals("O")) {
System.out.println(player.getName());
}
}
System.out.println("\nInvaders:");
for (Player player : players) {
if (player.getRole().equals("I")) {
System.out.println(player.getName());
}
}
Hier ist ein vollständiger Beispielcode für die Klasse Main, der die oben beschriebenen Änderungen enthält:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ArrayList<Player> players = new ArrayList<Player>();
Scanner keyScan = new Scanner(System.in);
for (int i=0; i<5; i++) {
System.out.print("Name: ");
String name = keyScan.nextLine();
System.out.print("Role (O or I): ");
String role = keyScan.nextLine();
// Hinzufügen des Players zur ArrayList
players.add(new Player(name, role));
}
System.out.println("\nOffenders:");
// Ausgabe der Namen aller Offenders
for (Player player : players) {
if (player.getRole().equals("O")) {
System.out.println(player.getName());
}
}
System.out.println("\nInvaders:");
// Ausgabe der Namen aller Invaders
for (Player player : players) {
if (player.getRole().equals("I")) {
System.out.println(player.getName());
}
}
keyScan.close();
}
}
Ich hoffe, dass diese Informationen hilfreich sind. Bitte lass mich wissen, wenn du weitere Fragen hast.
Vielen lieben Dank für deine hilfreiche Antwort auf mein Problem! Ich bin relativ neu hier bei dem Forum und bin begeistert wie engagiert die Leute hier einem helfen! Einfach nur toll! Verstehe alles bei deiner Antwort ausser die Methode mit den for (Player player : player) noch nicht. bis jetzt habe ich das einer counter Variable gelöst. for (i=0; i<5; i++). Aber werde nun einmal deine Methode studieren und lernen. Liebe Grüsse und nochmals besten Dank !