Erro

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.

[code]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);
	
	
	
}

}[/code]

[code]
public class SystemPlay {

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

}[/code]

Segue o erro.

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

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:

[quote=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: [/quote]

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.

[quote=Dhonatan][quote=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: [/quote]

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.[/quote]

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(&quot;Forneça a nota do &quot;+a+&quot;º Bimestre: &quot;);  
            this.noTa[a] = Double.parseDouble(nota[a]);   
            JOptionPane.showMessageDialog(null,&quot;A nota do &quot; +a+&quot;º bimestre é &quot;+noTa[a]);  
              
        }  

Teria que ser a iniciado em 0

[quote=InicianteJavaHenrique][quote=Dhonatan][quote=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: [/quote]

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.[/quote]

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(&quot;Forneça a nota do &quot;+a+&quot;º Bimestre: &quot;);  
            this.noTa[a] = Double.parseDouble(nota[a]);   
            JOptionPane.showMessageDialog(null,&quot;A nota do &quot; +a+&quot;º bimestre é &quot;+noTa[a]);  
              
        }  

Teria que ser a iniciado em 0

[/quote]

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

Cordialmente

Dhonatan

Há simples forma é isto sim.

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