[Resolvido] Erro na execução

5 respostas
Starkk

Eu estou tendo o seguinte erro quando digito o nome do aluno:

C:\Users\Alan\Desktop\Java>java Principal
Digite o nome do Aluno:
a
Exception in thread "main" java.lang.NullPointerException
        at Principal.main(Principal.java:16)

C:\Users\Alan\Desktop\Java>

Se vocês puderem me ajudar eu agradeço.
O codigo segue abaixo.

public class Aluno {

	String nome;
	double p1, p2, media;
	
}
import java.util.Scanner;

public class Principal {

	public static void main(String args[]){
	
		String captura;
		Aluno[] aluno = new Aluno[2];
	
		for( int cont = 0; cont < 2; cont++){
		
			Scanner entrada = new Scanner(System.in);
	
			System.out.println("Digite o nome do Aluno: ");
				aluno[cont].nome = entrada.nextLine(); 
		
			System.out.println("Digite a nota da P1: ");
				captura = entrada.nextLine();
				aluno[cont].p1 = Double.parseDouble(captura);
		
			System.out.println("Digite a nota da P2: ");
				captura = entrada.nextLine();
				aluno[cont].p2 = Double.parseDouble(captura);
			
			aluno[cont].media = (aluno[cont].p1 + aluno[cont].p2) / 2;
		
		}
		
		System.out.println("\n==\n");
		
		for( int cont2 = 0; cont2 < 2; cont2++){
		
			Scanner entrada = new Scanner(System.in);
	
			System.out.println(aluno[cont2].nome);
		
			System.out.println(aluno[cont2].p1);
		
			System.out.println(aluno[cont2].p2);
			
			System.out.println(aluno[cont2].media);
		
		}
	
	
	
	}



}

5 Respostas

romarcio

Você criou um array de Aluno é ta tentando passa valores como nome e nota, isso tá errado.

Se você tem um array de Aluno, você precisa passar um Aluno para o array.

Cria um objeto Aluno, insere os valores no objeto e depois atribui o objeto ao array.

E
for( int cont = 0; cont < 2; cont++){  
            aluno[cont] = new Aluno(); // primeiro você deve criar instanciar um objeto da classe aluno.
            Scanner entrada = new Scanner(System.in);  
      
            System.out.println("Digite o nome do Aluno: ");  
                aluno[cont].nome = entrada.nextLine();   
          
            System.out.println("Digite a nota da P1: ");  
                captura = entrada.nextLine();  
                aluno[cont].p1 = Double.parseDouble(captura);  
          
            System.out.println("Digite a nota da P2: ");  
                captura = entrada.nextLine();  
                aluno[cont].p2 = Double.parseDouble(captura);  
              
            aluno[cont].media = (aluno[cont].p1 + aluno[cont].p2) / 2;  
          
        }
Starkk

Obrigado, o programa rodou aqui depois que fiz o que vocês disseram.
Então no caso o que eu tinha feito foi criar um vetor de objetos, mas sem objeto nas posições do vetor?

romarcio

Starkk:
Obrigado, o programa rodou aqui depois que fiz o que vocês disseram.
Então no caso o que eu tinha feito foi criar um vetor de objetos, mas sem objeto nas posições do vetor?

Você criou um array de um tipo especifico que era Aluno. Esse array então só aceita objetos do tipo Aluno. Por isso você precisa criar o objeto aluno, setar os valores em aluno, para então inserir esse objeto em uma posição do array.

Se você tivesse criar um array de String (String[]) só poderia inserir String… e assim por diante.

Starkk

Consegui entender meu erro agora, obrigado.
Obs: Vou colocar meu codigo final abaixo, caso alguem queira me dar alguma dica fique a vontade.

public class Aluno {

	private String nome;
	private double p1, p2, media;
	
	public void setNome(String nome){
	
		this.nome = nome;
	
	}
	
	public String getNome(){
	
		return this.nome;
	
	}
	
	public void setP1(double p1){
	
		if(p1<0 || p1>10){
		
		System.out.println("Erro a p1 nao foi computada.");
		
		} else {
		
			this.p1 = p1;
		
		}
	
	}
	
	public double getP1(){
	
		return this.p1;
	
	}
	
	public void setP2(double p2){
	
		if(p2<0 || p2>10){
		
			System.out.println("Erro a p2 nao foi computada.");
		
		} else {
		
			this.p2 = p2;
		
		}
	
	}
	
	public double getP2(){
	
		return this.p2;
	
	}
	
	public void setMedia(){
	
		this.media = (p1 + p2) / 2;
	
	}
	
	public double getMedia(){
	
		return this.media;
	
	}
	
	
	
}
import java.util.Scanner;

public class Principal {

	public static void main(String args[]){
	
		double converte;
		String captura;
		Aluno[] aluno = new Aluno[2];
	
		for( int cont = 0; cont < 2; cont++){
		
			Scanner entrada = new Scanner(System.in);
			aluno[cont] = new Aluno();
	
			System.out.println("Digite o nome do Aluno: ");
				captura = entrada.nextLine();
				aluno[cont].setNome(captura);
		
			System.out.println("Digite a nota da P1: ");
				captura = entrada.nextLine();
				converte = Double.parseDouble(captura);
				aluno[cont].setP1(converte);
		
			System.out.println("Digite a nota da P2: ");
				captura = entrada.nextLine();
				converte = Double.parseDouble(captura);
				aluno[cont].setP2(converte);
			
			aluno[cont].setMedia();
		
		}
		
		System.out.println("\n==\n");
		
		for( int cont2 = 0; cont2 < 2; cont2++){
			
			System.out.println(aluno[cont2].getNome());
		
			System.out.println(aluno[cont2].getP1());
		
			System.out.println(aluno[cont2].getP2());
			
			System.out.println(aluno[cont2].getMedia());
		
		}
	
	
	
	}



}
Criado 16 de dezembro de 2012
Ultima resposta 18 de dez. de 2012
Respostas 5
Participantes 3