Orientacao Objetos - duvidas

4 respostas
L
Desenvolver um programa em java que atenda as seguintes condicoes:

-Possuir uma classe produto que contenha os seguintes

atributos:codigo,descricao e valor;

-Possuir uma classe Eletrodomestico,que esta seja uma classe "filha"da

classe produto e possua o atributo voltagem;

-Possibilite o cadastro de 5 eletrodomesticos.Estas informacoes sobre os

eletrodomesticos deverao ser armazenadas em um array de objetos

eletrodomestico.

-As informacoes dos produtos deverao ser informadas via teclado.

-Deve possui metodos para calcular a media do valor de todos os

eletrodomesticos;calcular o produto mais caro e; calcular o produto

mais barato.

-Criar um metodo que imprime os eletrodomesticos por ordem crescente

de valor.
import javax.swing.*;
class Principal{
	public static void main(String arg[]){
		cadastro();	
	}	
	public static void cadastro(){
   	  Eletrodomestico v[]=new Eletrodomestico[6];
   	  
   	   for(int contador=1;contador<6;contador++){
   	  	 v[contador]=new Eletrodomestico();
   	   }
   	  	
   	   for(int contador=1;contador<6;contador++){
   	     v[contador].codigo=Integer.parseInt (JOptionPane.showInputDialog("Digite um codigo:"));
	     v[contador].descricao=JOptionPane.showInputDialog("Digite um descricao:");
	     v[contador].valor=Integer.parseInt (JOptionPane.showInputDialog("Digite um valor:"));
       }
       
    	calculaMedia(v);
    	calculaMaisBarato(v);
    	caculaMaisCaro(v);
    	ordemcrescent(v);    
       	for(int contador=1;contador<6;contador++){
    	   System.out.println(v[contador].valor);
    	}
    }			 
        
		
	  public static void calculaMedia(Eletrodomestico a[]){
	   	double media=0,
	   	       soma=0;
	   	for(int contador=1;contador<6;contador++){
	   	 soma=a[contador].valor+soma;
	 	}
	 	media=soma/5;
	 	System.out.println("*******************"); 
	 	System.out.println("media"+ media+ "");
	 	System.out.println("*******************");
	   }
	 public static void calculaMaisBarato(Eletrodomestico a[]){
	 	
	 	    int menor;
	 	     menor=999;
	 	    for(int contador=1;contador<6;contador++){
	 	 	  if(a[contador].valor<menor){
	 	 	    menor=a[contador].valor;
	    	
	    	  }	
	    	} 
	    	System.out.println("*******************");
	    	System.out.println("menor valor"+ menor+ "");
	    	System.out.println("*******************");	 
	 }
	 public static void caculaMaisCaro(Eletrodomestico a[]){
	   
	   int maior;
	   	maior=0;
	   	for(int contador=1;contador<6;contador++){
	     if(a[contador].valor>maior){
	        maior=a[contador].valor;
	    	 
	      }
         }
         System.out.println("*******************");
         System.out.println("maior "+ maior+ "");
         System.out.println("*******************");	  
	 }
	 public static void ordemcrescent(Eletrodomestico a[]){
	 	for(int pass=1;pass<6;pass++){
	      for(int element=1;element<6;element++){
	        if(a[element].valor>a[element+1].valor){
	     		swap(a,element,element+1);
	     	}	
	      }
	    }
	    
	 }
	 public static  void swap(Eletrodomestico a[],int first,int secord){
    	int hold;//area de armazenamento temporario para trocar
    	hold=a[first].valor;
    	a[first].valor=a[secord].valor;
    	a[secord].valor=hold;
    }
	}

minha duvida neste programa eh quanto a classificacao do valor em ordem crescente e a impressao do array.

Esta calculando certo a media do valor dos eletrodomesticos , o produto mais caro e o mais barato.

So estou com dificuldades em saber a classificacao e impressao do array.

Alguem poderia me ajudar achar o erro?

obrigado

[size=“11”]
[color=“red”]

  • Editado: Aumente as chances de alguém responder o seu tópico. Use BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários. - Matheus[/color][/size] :joia:

4 Respostas

J

Onde está o método Eletrodomestico()?

Outra coisa, se você vai trabalhar com 5 elementos tem que iniciar o for com 0 e mudar o condicional para <5.

Se você cria um array (digamos um array chamado ar[]) de 3 posições então as referências vão ser ar[0], ar[1] e ar[2]. Se você tentar usar ar[3] vai dar erro.

Tem outras coisas, mas depois eu escrevo.

[]'s

L

class Eletrodomestico extends Produto{
int voltagem;

}

class Produto {

int codigo;

String descricao;

int valor;

}

Ai esta a classe eletrodomestico e a classe produto mais minha duvida eh na classe principal,
minha duvida neste programa eh quanto a classificacao do valor em ordem crescente e a impressao do array.

Esta calculando certo a media do valor dos eletrodomesticos , o produto mais caro e o mais barato.

So estou com dificuldades em saber a classificacao e impressao do array.

Alguem poderia me ajudar achar o erro?

J
O problema era nos for mesmo:
import javax.swing.*;
class Principal{
public static void main(String arg[]){
cadastro();
}
public static void cadastro(){
Eletrodomestico v[]=new Eletrodomestico[6];

for(int contador=0;contador<5;contador++){
v[contador]=new Eletrodomestico();
}

for(int contador=0;contador<5;contador++){
v[contador].codigo=Integer.parseInt (JOptionPane.showInputDialog("Digite um codigo:"));
v[contador].descricao=JOptionPane.showInputDialog("Digite uma descricao:");
v[contador].valor=Integer.parseInt (JOptionPane.showInputDialog("Digite um valor:"));
}

calculaMedia(v);
calculaMaisBarato(v);
caculaMaisCaro(v);
ordemcrescent(v);
for(int contador=0;contador<5;contador++){
System.out.println(v[contador].valor);
}
System.exit(0);
}


public static void calculaMedia(Eletrodomestico a[]){
double media=0,
soma=0;
for(int contador=0;contador<5;contador++){
soma+=a[contador].valor;
}
media=soma/5;
System.out.println("*******************");
System.out.println("media "+ media+ "");
System.out.println("*******************");
}
public static void calculaMaisBarato(Eletrodomestico a[]){

int menor;
menor=999;
for(int contador=0;contador<5;contador++){
if(a[contador].valor<menor){
menor=a[contador].valor;

}
}
System.out.println("*******************");
System.out.println("menor valor "+ menor+ "");
System.out.println("*******************");
}
public static void caculaMaisCaro(Eletrodomestico a[]){

int maior;
maior=0;
for(int contador=0;contador<5;contador++){
if(a[contador].valor>maior){
maior=a[contador].valor;

}
}
System.out.println("*******************");
System.out.println("maior "+ maior+ "");
System.out.println("*******************");
}
public static void ordemcrescent(Eletrodomestico a[]) {
for(int pass=0;pass<5;pass++){
for(int element=0;element<4;element++){
if(a[element].valor>a[element+1].valor){
swap(a,element,element+1);
}
}
}

}
public static void swap(Eletrodomestico a[],int first,int secord){
int hold;//area de armazenamento temporario para trocar
hold=a[first].valor;
a[first].valor=a[secord].valor;
a[secord].valor=hold;
}
}
class Eletrodomestico extends Produto{
int voltagem;


}

class Produto {
int codigo;
String descricao;
int valor;

}
C

bom dia gente, blza?
Luciano40
vc precisa corrigir os “for”

for(int contador=0;contador<5;contador++)

o array q vc criou possue 6 posições(de 0 até 5)
dentro do for vc colocou o looping até q: contador < 5, ou seja,
ele não vai dar o laço que compreende a posição 6
vc deveria fazer :

for(int contador=0;contador<=5;contador++)

ou

for(int contador=0;contador<6;contador++)

me corrijam se eu disse besteira
espero ter ajudado
:wink:

Criado 2 de julho de 2005
Ultima resposta 4 de jul. de 2005
Respostas 4
Participantes 3