Erro

5 respostas
D

Salve amigos estou com um problema ao executar meu micro sistema de média. Acho que seja somente um detalhe, mas tá difícil descobrir o que é.

Aproveitando o espaço alguém pode me dizer da forma mais simples possível para que serve esse bendito this. Pelo que sei é uma referência à uma variável do próprio objeto, é isso mesmo? Tem algo mais?

Desde já agradeço a atenção de todos.

import javax.swing.JOptionPane;


public class MediaAluno {
	private String nota[] = new String[4];
	private double noTa[] = new double[4];
	private String nome;
	private String materia;
	private double media=0.0;
	
	public String[] getNota() {
		return nota;
	}
	public void setNota(String[] nota) {
		this.nota = nota;
	}
	public double[]getNoTa(){
		return noTa;
	}
	public void setNoTa(double[]noTa){
		this.noTa=noTa;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getMateria() {
		return materia;
	}
	public void setMateria(String materia) {
		this.materia = materia;
	}
	public double getMedia() {
		return media;
	}
	public void setMedia(double media) {
		this.media = media;
	}
	
	public void mediaaluno(){
		this.nome=JOptionPane.showInputDialog("Informe o seu nome? ");
		this.materia=JOptionPane.showInputDialog("informe a disciplina? ");
		
		for (int a =1; a<5; a++){
			this.nota[a]= JOptionPane.showInputDialog("Forneça a nota do "+a+"º Bimestre: ");
			this.noTa[a] = Double.parseDouble(nota[a]); 
			JOptionPane.showMessageDialog(null,"A nota do " +a+"º bimestre é "+noTa[a]);
			
		}
		this.media = (noTa[1]+noTa[2]+noTa[3]+noTa[4])/4;
		JOptionPane.showMessageDialog(null, "Olá "+nome+" sua média em "+materia+" é: "+media);
		
		
		
	}

}
public class SystemPlay {
	
	public static void main (String[] args){
		MediaAluno x = new MediaAluno();
		
		x.mediaaluno();
	}

}

Segue o erro.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
	at MediaAluno.mediaaluno(MediaAluno.java:47)
	at SystemPlay.main(SystemPlay.java:7)

5 Respostas

InicianteJavaHenriqu

Olá Dhonatan

Neste trecho do código:

this.media = (noTa[1]+noTa[2]+noTa[3]+noTa[4])/4;

você acessa o endereço 4 do seu vetor, porém este vai de 0 a 3, então o correto seria:

this.media = (noTa[0]+noTa[1]+noTa[2]+noTa[3])/4;

flw :thumbup:

D

InicianteJavaHenrique:
Olá Dhonatan

Neste trecho do código:

this.media = (noTa[1]+noTa[2]+noTa[3]+noTa[4])/4;

você acessa o endereço 4 do seu vetor, porém este vai de 0 a 3, então o correto seria:

this.media = (noTa[0]+noTa[1]+noTa[2]+noTa[3])/4;

flw :thumbup:

Brother, realmente essa parte estava errada, esqueci que estava fora do for. Mas o erro persiste, acho que é na minha variável media que está a encrenca.

InicianteJavaHenriqu

Dhonatan:
InicianteJavaHenrique:
Olá Dhonatan

Neste trecho do código:

this.media = (noTa[1]+noTa[2]+noTa[3]+noTa[4])/4;

você acessa o endereço 4 do seu vetor, porém este vai de 0 a 3, então o correto seria:

this.media = (noTa[0]+noTa[1]+noTa[2]+noTa[3])/4;

flw :thumbup:

Brother, realmente essa parte estava errada, esqueci que estava fora do for. Mas o erro persiste, acho que é na minha variável media que está a encrenca.

Mas até mesmo no seu for vc não acessa o endereço do seu vetor:

for (int a =1; a&lt;5; a++){  
            this.nota[a]= JOptionPane.showInputDialog("Forneça a nota do "+a+"º Bimestre: ");  
            this.noTa[a] = Double.parseDouble(nota[a]);   
            JOptionPane.showMessageDialog(null,"A nota do " +a+"º bimestre é "+noTa[a]);  
              
        }

Teria que ser a iniciado em 0

D

InicianteJavaHenrique:
Dhonatan:
InicianteJavaHenrique:
Olá Dhonatan

Neste trecho do código:

this.media = (noTa[1]+noTa[2]+noTa[3]+noTa[4])/4;

você acessa o endereço 4 do seu vetor, porém este vai de 0 a 3, então o correto seria:

this.media = (noTa[0]+noTa[1]+noTa[2]+noTa[3])/4;

flw :thumbup:

Brother, realmente essa parte estava errada, esqueci que estava fora do for. Mas o erro persiste, acho que é na minha variável media que está a encrenca.

Mas até mesmo no seu for vc não acessa o endereço do seu vetor:

for (int a =1; a&lt;5; a++){  
            this.nota[a]= JOptionPane.showInputDialog("Forneça a nota do "+a+"º Bimestre: ");  
            this.noTa[a] = Double.parseDouble(nota[a]);   
            JOptionPane.showMessageDialog(null,"A nota do " +a+"º bimestre é "+noTa[a]);  
              
        }

Teria que ser a iniciado em 0

Salve irmão, agora assim entendi o que quis dizer e funcionou. Agradeço a pronta ajuda.

Cordialmente

Dhonatan

InicianteJavaHenriqu

Há simples forma é isto sim.

Tem tbm umas referencias aqui :arrow: http://javafree.uol.com.br/topic-855409-Referencia-this.html

Criado 27 de janeiro de 2012
Ultima resposta 27 de jan. de 2012
Respostas 5
Participantes 2