Estanciar objeto como vetor

17 respostas
J

Ola estou com probelema em um exercicoo se algume puder me ajudar

criei uma classe Aluno com os atributos e uma classe que estanciara 3 alunos…
dai resolvi usar vetor na hora de estanciar mas da erro

import javax.swing.*;
public class Lancanota {

public static void main(String[]Args) {
     int cont=0;

     Aluno alu [] = new Aluno[3];
     
     while(cont<3){
          alu[cont].setNome(JOptionPane.showInputDialog(null,"Informe o nome do primeiro aluno"));
          alu[cont].setMatricula(Integer.parseInt(JOptionPane.showInputDialog(null,"Informe a matricula do primeiro aluno")));
          alu[cont].setNota1(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a primeira nota")));
          alu[cont].setNota2(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a segunda nota")));
          alu[cont].setNota3(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a terceira nota")));
          alu[cont].setNota4(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a quarta nota")));
     cont++; }     
      
}

public static Aluno {
    private int matricula;
    private String nome;
    private double nota1;
    private double nota2;
    private double nota3;
    private double nota4;

   public void setMatricula(int matriculax){
       matricula=matriculax;       
   }   	
   public int getMatricula(){
      return matricula;       
   }   	

   public void setNome(String nomex){
   nome=nomex;       
   }   	
   public String getNome(){
      return nome;       
   }   	

   public void setNota1(double notax1){
      nota1=notax1;       
   }   	
   public double getNota1(){
      return nota1;       
   }   	
   public void setNota2(double notax2){
      nota2=notax2;       
   }   	
   public double getNota2(){
      return nota2;       
   }     	
   public void setNota3(double notax3){
      nota3=notax3;       
   }   	
   public double getNota3(){
      return nota3;       
   }   	
   public void setNota4(double notax4){
      nota4=notax4;       
   }   	
   public double getNota4(){
      return nota4;       
   }

}
}

17 Respostas

R
Aluno alu [] = new Aluno[3];

muda para

Aluno[] alu = new Aluno[3];
J

valeu pela ajuda …mas deu o mesmo erro

rsrsr…faltei na aula nesse dia

J

pior que ele deixa informar o primeiro nome e da erro

Gobain
Aluno alu [] = new Aluno[3];

while(cont<3){

alu[cont] = new Aluno();

alu[cont].setNome(JOptionPane.showInputDialog(null,"Informe o nome do primeiro aluno"));
alu[cont].setMatricula(Integer.parseInt(JOptionPane.showInputDialog(null,"Informe a matricula do primeiro aluno")));
alu[cont].setNota1(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a primeira nota")));
alu[cont].setNota2(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a segunda nota")));
alu[cont].setNota3(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a terceira nota")));
alu[cont].setNota4(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a quarta nota")));
cont++;
}

faltou inicializar as posições do array... coloca o new Aluno() ali no começo q resolve :thumbup:

X

Esta linha está certa. Pode ser feito das duas formas.

posta o erro pra ficar mais fácil de ajudar ! :smiley:

J

esse abaixo e o bendito erro rsrsrs

Exception in thread “main” java.lang.NullPointerException
at Lancanota.main(Lancanota.java:18)

dm_thiago
public static Aluno {

Não era para ser public class Aluno? E também tem que instanciar os Aluno.

Só fazer um for:

for (int i = 0; i < alu.length; i++) { alu[i] = new Aluno(); }

J

mesmo assim continua o erro

Gobain

Então coloca aqui em qual linha o erro que está dando. Sem saber isso é meio difícil de adivinhar… não somos videntes :smiley:

J

linha 19 que é alu[cont] = new Aluno();
e no erro diz que

non static variable this cannot be referenced from a static context

dm_thiago
import javax.swing.*;
public class Lancanota {

public static void main(String[]Args) {
int cont=0;

Aluno alu [] = new Aluno[3];

for (int i = 0; i < alu.length; i++)
	alu[i] = new Aluno();

while(cont<3){
alu[cont].setNome(JOptionPane.showInputDialog(null,"Informe o nome do primeiro aluno"));
alu[cont].setMatricula(Integer.parseInt(JOptionPane.showInputDialog(null,"Informe a matricula do primeiro aluno")));
alu[cont].setNota1(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a primeira nota")));
alu[cont].setNota2(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a segunda nota")));
alu[cont].setNota3(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a terceira nota")));
alu[cont].setNota4(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a quarta nota")));
cont++; }


}
}
public class Aluno {
private int matricula;
private String nome;
private double nota1;
private double nota2;
private double nota3;
private double nota4;

public void setMatricula(int matriculax){
matricula=matriculax;
}
public int getMatricula(){
return matricula;
}

public void setNome(String nomex){
nome=nomex;
}
public String getNome(){
return nome;
}

public void setNota1(double notax1){
nota1=notax1;
}
public double getNota1(){
return nota1;
}
public void setNota2(double notax2){
nota2=notax2;
}
public double getNota2(){
return nota2;
}
public void setNota3(double notax3){
nota3=notax3;
}
public double getNota3(){
return nota3;
}
public void setNota4(double notax4){
nota4=notax4;
}
public double getNota4(){
return nota4;
}

}

Corrigindo os dois erros que eu vi: você não instanciava os alunos, e no lugar de class Aluno estava static Aluno. Testa isso que eu colei aí.

J

continua o erro
ele nao deixa estanciar os alunos diz o seguinte

non static variable this cannot be referenced from a static context

dm_thiago

Você criou duas classes separadas ou Aluno (em dois arquivos .java) ou Aluno está logo em sequência de Lancanota?

J

pelo que vi estou estanciado o objeto aprtir do public static void main …
ele nao esta permitindo,…
eu tirei o static e compilou so nao executa agora

J

agora esta logo abaixo

dm_thiago

Se está logo abaixo, você tem que tirar o "public " que tem antes do "class Aluno". Deixa só "class Aluno" mesmo. O erro é porque você não pode ter duas classes públicas dentro de um único arquivo .java

Ou tenta colocar a classe Aluno em outro .java
Eu pelo menos não sou a favor de ficar atochando classes em um único arquivo, prefiro que cada classe fique separado, acho mais elegante. Aí vai como deve ficar agora:

import javax.swing.*;
public class Lancanota {

public static void main(String[]Args) {
int cont=0;

Aluno alu [] = new Aluno[3];

for (int i = 0; i < alu.length; i++)
	alu[i] = new Aluno();

while(cont<3){
alu[cont].setNome(JOptionPane.showInputDialog(null,"Informe o nome do primeiro aluno"));
alu[cont].setMatricula(Integer.parseInt(JOptionPane.showInputDialog(null,"Informe a matricula do primeiro aluno")));
alu[cont].setNota1(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a primeira nota")));
alu[cont].setNota2(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a segunda nota")));
alu[cont].setNota3(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a terceira nota")));
alu[cont].setNota4(Double.parseDouble(JOptionPane.showInputDialog(null,"Informe a quarta nota")));
cont++; }


}
}

class Aluno {
private int matricula;
private String nome;
private double nota1;
private double nota2;
private double nota3;
private double nota4;

public void setMatricula(int matriculax){
matricula=matriculax;
}
public int getMatricula(){
return matricula;
}
public void setNome(String nomex){
nome=nomex;
}
public String getNome(){
return nome;
}
public void setNota1(double notax1){
nota1=notax1;
}
public double getNota1(){
return nota1;
}
public void setNota2(double notax2){
nota2=notax2;
}
public double getNota2(){
return nota2;
}
public void setNota3(double notax3){
nota3=notax3;
}
public double getNota3(){
return nota3;
}
public void setNota4(double notax4){
nota4=notax4;
}
public double getNota4(){
return nota4;
}

}
J

cara agora deu certo…
valeu mesmo

muito obrigado,…me salvou …rsrsrsr
value

Criado 9 de abril de 2008
Ultima resposta 9 de abr. de 2008
Respostas 17
Participantes 5