Mister Bunker
Mister Bunker

Reputation: 93

Need help programming a word game

I am getting an error message in Eclipse:

The type of the expression must be an array type but it resolved to Player.

I have created an object Player. The user through the JOptionPane enters how many players they want. I am trying to store the players names in an array.

 public class Project3 {
 public static void main(String[] args){

  String input = JOptionPane.showInputDialog("Enter the number of players: ");
  int numPlayers = Integer.parseInt(input);
  Player nameOfPlayers;

  for(int i = 0; i < numPlayers; i++){
   nameOfPlayers[i] = new Player(JOptionPane.showInputDialog("Enter the number of players: "));
   if (input == null || input.equals(" ")) throw new IllegalArgumentException("Must enter valid name!!!");

  }

 }

Here's is my Class Player:

public class Player {
 private String name;

 public Player(String name){
  if(name == null || name.equals(" "))
   throw new IllegalArgumentException("Must enter a name. ");

  this.name = name;

 }


 public void addWord(Word w){

 }
 public int getScore(){

 }
}

Upvotes: 0

Views: 690

Answers (4)

maks
maks

Reputation: 6006

You haven't create an array. Maybe you mean Player [] nameOfPlayers = new Player[somevalue];

Upvotes: 1

akf
akf

Reputation: 39485

You are defining nameOfPlayers as type Player - not an array of Player. It should be

Player[] nameOfPlayers;

You will need to initialize it as well before you assign Player instances.

Upvotes: 0

Chris Dennett
Chris Dennett

Reputation: 22721

It looks like you're missing an ending brace (}) at the end of the first bit of code you pasted. You haven't closed off the Project3 class properly.

Edit: now I know the error, nameOfPlayers needs to be an array for you to access it as an array later on in the code. You also need to size it to numPlayers on its initialisation.

Upvotes: 0

perimosocordiae
perimosocordiae

Reputation: 17807

You're using the old value of input (from when you were asking for the number of players). You probably want something more like this:

for(int i = 0; i < numPlayers; i++){
   input = JOptionPane.showInputDialog("Enter the player's name: ");
   if (input == null || input.equals(" "))
       throw new IllegalArgumentException("Must enter valid name!!!"); 
   nameOfPlayers[i] = new Player(input);
}

Edit: Based on the error message you posted, the problem is that nameOfPlayers isn't an array, but you're treating it like one. Try Player[] players = new Player[numPlayers]; instead.

Upvotes: 0

Related Questions