Problem mit Loop

nick_10

Mitglied
Hallo

Ich versuche einen Loop zu erstellen, mit dem nacheinander bis zu 10 Spielernamen
eingelesen werden können. Das funktioniert abgesehen vom 1. Spieler. Ich kann erst
ab dem 2. eine Eingabe tätigen.

Java:
import java.util.Scanner;

public class PlayerSettings
{
	Scanner keyboard = new Scanner(System.in);
	public int numberOfPlayers;
	String[] players = new String[10];

	public void settings()
	{
		System.out.println("Enter the number of Players (10 max): ");
		numberOfPlayers = keyboard.nextInt();

	int i = 1;
		while (i <= numberOfPlayers)
		{
			System.out.println("Enter the name of the player Nr. " + i);
			players[i] = keyboard.nextLine();
			System.out.println("Name of player Nr. " + i + " is: " + players[i]);
			i++;
		}
	}
}

Console

Enter the number of Players (10 max):
3
Enter the name of the player Nr. 1
Name of player Nr. 1 is: <-- hier kann ich keinen Namen eingeben
Enter the name of the player Nr. 2
nr2 <-- ab hier funktionierts
Name of player Nr. 2 is: nr2
Enter the name of the player Nr. 3
nr3
Name of player Nr. 3 is: nr3

------------------

Ich habe noch eine weitere Frage: Wieso funktioniert das nicht:
String[] players = new String[numberOfPlayers]
So könnte das Maximum an Spielern der Anzahl Spieler angepasst
werden, es wären also gegen oben keine Grenzen gesetzt.

Hier noch ein wenig genauer:
Java:
	Scanner keyboard = new Scanner(System.in);
	public int numberOfPlayers;
	numberOfPlayers = keyboard.nextInt();
	String[] players = new String[numberOfPlayers];

Danke für eure Hilfe
 
Ich vermute, dir bleibt der Zeilenumbruch vom NextInt im Stream zurück. Machs doch einfach so:

Java:
import java.util.Scanner;

public class PlayerSettings
{
	public int numberOfPlayers;
	String[] players = new String[10];

	public void settings()
	{
		Scanner keyboard = new Scanner(System.in);

		System.out.println("Enter the number of Players (10 max): ");
		numberOfPlayers = keyboard.nextInt();
		keyboard.nextLine();

		for(int i = 0; i < numberOfPlayers; i++)
		{
			System.out.println("Enter the name of the player Nr. " + (i + 1));
			players[i] = keyboard.nextLine();
			System.out.println("Name of player Nr. " + (i + 1) + " is: " + players[i]);
		}
	}
}

Edit: Weil numberOfPlayers bei der Klassenintialisation noch 0 ist. Du musst das Array nach dem Einlesen intialisieren.
 

Neue Themen


Zurück
Oben