[RESOLVIDO]NullPointerException

Olá!

Estou com um problema em um projetinho que estou fazendo…


public class Jogador {
	private String nome;
	private int numca;

	public Jogador(String nome, int numca) {
		super();
		this.nome = nome;
		this.numca = numca;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getNumca() {
		return numca;
	}

	public void setNumca(int numca) {
		this.numca = numca;
	}

}

[code]import java.util.Arrays;
import javax.swing.JOptionPane;

public class TimeSalao {
private Jogador[] jog = new Jogador[5];
private String nomeTime;

//construtor editado depois da dica do nel
public TimeSalao(String nome) {
nomeTime = nome;
String auxiliar = “”;

	for (int i = 0; i < jog.length; i++) {
		auxiliar = JOptionPane.showInputDialog("Digite um nome ao jogador: ");
		Jogador jogador = new Jogador(auxiliar, i+1);// i+1 significa que o número da camiseta do jogador será o numero do índice + 1

		jog[i]= jogador;
		
	}

}

public String getNomeTime() {
	return nomeTime;
}

public void setNomeTime(String nomeTime) {
	this.nomeTime = nomeTime;
}


@Override
public String toString() {
	
	return "Time "+nomeTime+ "[jog=" + Arrays.toString(jog) + "]";
}

public void setJog(Jogador j) {
	for (int i = 0; i < jog.length; i++)
		if (jog[i] == null)
			jog[i] = j;
	System.out.println("Time cheio.");
}

}
[/code]

[code]public class JogoSalao {
private TimeSalao time1;
private TimeSalao time2;
private int placart1;
private int placart2;

public JogoSalao(TimeSalao time1, TimeSalao time2) {
	super();
	this.time1 = time1;
	this.time2 = time2;
	placart1 = -1;
	placart2 = -1;
}

public int getPlacart1() {
	return placart1;
}

public void setPlacart1(int placart1) {
	this.placart1 = placart1;
}

public int getPlacart2() {
	return placart2;
}

public void setPlacart2(int placart2) {
	this.placart2 = placart2;
}

public void setResultadoJogo(int t1, int t2) {
	placart1 = t1;
	placart2 = t2;
}

public String imprimeEscalacao() {
	String t1 = "";
	t1 = time1.toString() + "\n" + time2.toString();
	return t1;

}
public String imprimeResultado(){
	return time1.getNomeTime()+" : " + getPlacart1()+ " X " +time2.getNomeTime()+" : "+getPlacart2();
	
}

}
[/code]

import javax.swing.JOptionPane;

public class PrimeiraFaseCampeonatoSalao {
	private JogoSalao[][] jogo;

	public PrimeiraFaseCampeonatoSalao() {
		super();
		jogo = new JogoSalao[5][5];

	}

	public boolean adicionaJogo(JogoSalao j, int dia, int hora) {
		// for(int linha = 0;linha<jogo.length;linha++)
		// for(int coluna = 0;coluna<jogo[linha].length;coluna++)
		if (jogo[dia][hora] == null) {
			jogo[dia][hora] = j;
			return true;
		}
		return false;
	}

	public void imprimeTabela() {
		String dia = "";
		String hora = "";

		for (int linha = 0; linha < jogo.length; linha++) {
			for (int coluna = 0; coluna < jogo[linha].length; coluna++) {
				if (jogo[linha][coluna] != null) {
					if (linha == 0)
						dia = "Segunda-feira";
					else if (linha == 1)
						dia = "Terça-feira";
					else if (linha == 2)
						dia = "Quarta-feira";
					else if (linha == 3)
						dia = "Quinta-feira";
					else if (linha == 4)
						dia = "Sexta-feira";
					else if (coluna == 0)
						hora = "14h";
					else if (coluna == 1)
						hora = "16h";
					else if (coluna == 2)
						hora = "18h";
					else if (coluna == 3)
						hora = "20h";
					else if (coluna == 4)
						hora = "22h";

					JOptionPane.showMessageDialog(null, "Jogo: "
							+ jogo[linha][coluna]);
					JOptionPane.showMessageDialog(null, "Dia: " + dia + " - "
							+ "Horário: " + hora);
					if (jogo[linha][coluna].getPlacart1() != -1
							&& jogo[linha][coluna].getPlacart2() != -1)
						JOptionPane.showMessageDialog(null, "Resultado: "
								+ jogo[linha][coluna].getPlacart1() + " x "
								+ jogo[linha][coluna].getPlacart2());

				}

			}
		}
	}

	public void informaResultado(JogoSalao j, int p1, int p2) {
		for (int linha = 0; linha < jogo.length; linha++) {
			for (int coluna = 0; coluna < jogo[linha].length; coluna++) {
				if (jogo[linha][coluna] == j) {
					jogo[linha][coluna].setPlacart1(p1);
					jogo[linha][coluna].setPlacart2(p2);
				}
			}

		}
	}
}

[code]public class Principal {

public static void main(String[] args) {
	PrimeiraFaseCampeonatoSalao primeira = new PrimeiraFaseCampeonatoSalao();

	/**
	 * int dia = 0; int hora = 0;
	 */

	TimeSalao t1 = new TimeSalao("Time 1");
	TimeSalao t2 = new TimeSalao("Time 2");
	JogoSalao jogo1 = new JogoSalao(t1, t2);
	primeira.adicionaJogo(jogo1, 0, 0);// segunda14h

	TimeSalao t3 = new TimeSalao("Time 3");
	TimeSalao t4 = new TimeSalao("Time 4");
	JogoSalao jogo2 = new JogoSalao(t3, t4);
	primeira.adicionaJogo(jogo2, 3, 0);// quinta14h

	TimeSalao t5 = new TimeSalao("Time 5");
	TimeSalao t6 = new TimeSalao("Time 6");
	JogoSalao jogo3 = new JogoSalao(t5, t6);
	primeira.adicionaJogo(jogo3, 1, 1);// terça16h

	TimeSalao t7 = new TimeSalao("Time 7");
	TimeSalao t8 = new TimeSalao("Time 8");
	JogoSalao jogo4 = new JogoSalao(t7, t8);
	primeira.adicionaJogo(jogo4, 2, 2);// quarta18h

	TimeSalao t9 = new TimeSalao("Time 9");
	TimeSalao t10 = new TimeSalao("Time 10");
	JogoSalao jogo5 = new JogoSalao(t9, t10);
	primeira.adicionaJogo(jogo5, 3, 3);// quinta20h

	TimeSalao t11 = new TimeSalao("Time 11");
	TimeSalao t12 = new TimeSalao("Time 12");
	JogoSalao jogo6 = new JogoSalao(t11, t12);
	primeira.adicionaJogo(jogo6, 4, 4);// sexta22h
	// Tabela montada conforme pedido!
	//Agora imprimir tabela dos jogos!
	
	primeira.imprimeTabela();
	
}

}

[/code]

Alguém sabe me dizer porque está acontecendo isso?

Creio que seja um erro bem fácil de achar, mas não estou encontrando…

Ps.: o programa deve ter mais erros, visto que estou começando a testá-lo agora.

Abraços

Posta o erro gerado…completo…assim fica mais facil pra localizar onde esta acontecendo…

Boa tarde.

NullPointerException é quando um objeto nulo tenta acessar algum método e/ou valor. Basicamente, é isso.
Veja:

private Jogador[] jog = new Jogador[5];
O que está fazendo aqui ? Eu respondo. Está criando um vetor vazio de Objetos Jogador com tamanho 5.
Se fizeres: jog[0] vais ter como resposta um null.

Porque? Porque não foi criado uma instancia de Jogador, entende?
Então faça:

for(....) { Jogador jogador = new Jogador(); //seta os valores no objeto Jogador jog[i] = jogador; //armazena no vetor o objeto jogador

Recomendo ler sobre a API Collections para substituir seu vetor.
Abraços!

Sim sim, eu entendi que não podia usar o jog[i] (no caso era null) que iria dar o nullpointer…
O que não estava achando era uma maneira de atribuir um nome ao jogador usando este método, vou tentar assim como vc disse.

Obrigado

  for (int i = 0; i < jog.length; i++) {  
            //cria a instancia do jogador
             Jogador j = new Jogador();

             String inputNome = JOptionPane.showInputDialog("Digite um nome ao jogador: "); 
             
             j.setNome(inputNome);
             j.setNumca(i+1);  

            //atribui o objeto j no array no indice i
             jog[i] = j;
       }  

public TimeSalao(String nome) { nomeTime = nome; //não teria que colocar this.nomeTime = nome;??? String auxiliar = ""; }

[quote=williamdasflores]public TimeSalao(String nome) { nomeTime = nome; //não teria que colocar this.nomeTime = nome;??? String auxiliar = ""; }[/quote]

Na verdade não, pois usei o parâmetro com nome diferente. Mas se quisesse ter usado não haveria problema algum, compilaria da mesma forma.

Eu particularmente não uso o this, é que estes getters e setters foram o eclipse que fizeram para mim. 8)