"Só é possível ler no array, não gravar"

3 respostas
N

Olá, estou com um projeto da faculdade da elaboração de um jogo simples.
Estou com alguns problemas.

Criei uma Biblioteca pra guardar minhas classes, e uma classe com o nome de "Player":

public class Player {

    private String nome;

    public Player() {
        this.nome = "-";

    }

    public void setPlayer(String nome) {
this.nome = nome;

    }

public String getPlayer(){

return nome;

}
Em meu programa principal, eu criei um vetor para armazenar o nome dos jogadores:
int njogadores = 5;

Player p[] = new Player[njogadores+1];

Depois um for pra atribuir um nome para cada player:

for (int i = 1; i <= njogadores; i++) {

                        playername =  (JOptionPane.showInputDialog(null, "Digite o Nome do jogador " + i));
                        p[i].setplayer(playername);
                    }

Só que o programa dá erro com essa mensagem "Só é possível ler no array, não gravar", nesta linha precisamente:

Player p[] = new Player[njogadores+1];

Alguém consegue me ajudar?

3 Respostas

asousaj

Observações:

Não vi a declaração da variável playername(que é uma String).

p[i].setplayer(playername);//o metodo correto é setPlayer

Você não inicializou os objetos Player de seu array.

Tente assim:
public static void main(String[] args) {
		int njogadores = 5;
		Player p[] = new Player[njogadores + 1];
		String playername;
		for (int i = 1; i <= njogadores; i++) {

			playername = (JOptionPane.showInputDialog(null,
					"Digite o Nome do jogador " + i));
			p[i] = new Player();
			p[i].setPlayer(playername);
		}
	}
Considerando que sejam 5 players, não tem porque criar um int[6] se só vai usar 5 posições.
public static void main(String[] args) {
		int njogadores = 5;
		Player p[] = new Player[njogadores];
		String playername;
		for (int i = 0; i < njogadores; i++) {

			playername = (JOptionPane.showInputDialog(null,
					"Digite o Nome do jogador " + i));
			p[i] = new Player();
			p[i].setPlayer(playername);
		}
	}
A
narakeh:
Olá, estou com um projeto da faculdade da elaboração de um jogo simples. Estou com alguns problemas.

Criei uma Biblioteca pra guardar minhas classes, e uma classe com o nome de "Player":

public class Player {

    private String nome;

    public Player() {
        this.nome = "-";

    }

    public void setPlayer(String nome) {
this.nome = nome;

    }

public String getPlayer(){

return nome;

}
Em meu programa principal, eu criei um vetor para armazenar o nome dos jogadores:
int njogadores = 5;

Player p[] = new Player[njogadores+1];

Depois um for pra atribuir um nome para cada player:

for (int i = 1; i <= njogadores; i++) {

                        playername =  (JOptionPane.showInputDialog(null, "Digite o Nome do jogador " + i));
                        p[i].setplayer(playername);
                    }

Só que o programa dá erro com essa mensagem "Só é possível ler no array, não gravar", nesta linha precisamente:

Player p[] = new Player[njogadores+1];

Alguém consegue me ajudar?

Se você precisa de algo dinâmico, pode trabalhar com List, de uma pesquisada sobre ArrayList

asousaj

Minha opinião
Certamente usar Collections ajuda muito, mas jamais recomendo para que está começando a aprender java.
Se não sabe usar um simples array então ainda não é hora de avançar para Collections.

Criado 21 de janeiro de 2014
Ultima resposta 21 de jan. de 2014
Respostas 3
Participantes 3