O programa Compila certo mas nao gera resultados

14 respostas
H
Oi colegas tudo bem? Estou com um problemas no meu programa. Eu tenho uma classe Jpane e outra Jframe. E tenho campos de Modelo, Ano, Valor, é uma array de 5 posiçoes. ai eu quero que quando eu aperto o botão Maior ano lista o maior ano e quando eu apertar o botão de maior valor lista o maior valor. Mas quando eu arrumo um o outro da errado. eu não sei o que está havendo. Talvez é um erro lógico. Aqui só um pedaço do programa. Abraço
public class P3 extends Generico implements ActionListener
{
Carro c1[];
int count=0;

    public  P3 ()

{
super();
        this.jButton4.setText("Maior Ano");
        this.jButton5.setText("Maior Valor");
        jButton1.setVisible(false);
        jButton2.setVisible(false);
        jButton3.setVisible(false);
        jButton4.addActionListener(this);
        jButton5.addActionListener(this);
}
void setCarro(Carro[] p)
   {
        c1 = p;
    }

    public void actionPerformed(ActionEvent e)
    {
        int Maior=0;
        int MaiorV= 0;
        int MaiorValor=0;
        int MaiorA=0;
        if(e.getSource()==jButton5)  // Aqui quando eu apertar o botão vai percorrer a Array e colocar no campo maior Ano do carro. Quando eu arrumo aqui o outro não funciona.
        {
            for( int x =0; x<c1.length; x++)
            {
                if(c1[x].getAno()>Maior)
                Maior= x;
                MaiorA = c1[x].getValor();

            }
            jTextField3.setText( Integer.toString(c1[MaiorA].getValor()));
            jTextField2.setText("");
        }
        else if(e.getSource()==jButton4)// aqui coloca Maior valor. 
       {
            for(int x=0; x<c1.length; x++)
            {
                if(c1[x].getValor()>MaiorValor)
                {
                   MaiorValor = x;
                   MaiorV = c1[x].getValor();
                }
            }
             jTextField2.setText( Integer.toString(c1[MaiorV].getAno()));
             jTextField3.setText("");
         }
         
        }

14 Respostas

guisantogui

coloca a main!

tauame

nas linhas 33, 34 e 35, não deveria ser assim o código?

if(c1[x].getAno() > MaiorA){
                Maior = x;
                MaiorA = c1[x].getAno(); 
                }
...

ao inves de getValor

H

Isso ai Tautame não tinha visto. Arrumei mas so funciona em um campo. Deve ser alguma coisa lógica mas não estou encontrando. Por exemplo se eu mudo apenas o codigo em um botão funciona mas os dois não funcionam juntos. não sei se me entendeu. abraço

H
Agora eu arrumei mas não aparece nada no campo.
public void actionPerformed(ActionEvent e)
    {
        int Maior=0;
        int MaiorV= 0;
        int MaiorValor=0;
        int MaiorA=0;

 if(e.getSource()==jButton5)
        {
            for( int x =0; x<c1.length; x++)
            {
                if(c1[x].getValor()>Maior) // O erro deve estar ocorrendo por aqui, mas está certo eu acho a logica.
                Maior= x;
                MaiorA = c1[x].getValor();

            }
            jTextField3.setText( Integer.toString(c1[MaiorA].getValor()));
            jTextField2.setText("");
        }
        else if(e.getSource()==jButton4)
       {
            for(int x=0; x<c1.length; x++)
            {
                if(c1[x].getAno()>Maior)
                {
                   MaiorValor = x;
                   MaiorV = c1[x].getAno();
                }
            }
             jTextField2.setText( Integer.toString(c1[MaiorV].getAno()));
             jTextField3.setText("");
         }
         
        }
tauame

achei outros problemas, editei o código, mas não sei se é isso...

public  class P3 extends Generico implements ActionListener  
 {  
 Carro c1[];  
 int count=0;  
   
     public  P3 ()  
   
 {  
 super();  
         this.jButton4.setText("Maior Ano");  
         this.jButton5.setText("Maior Valor");  
         jButton1.setVisible(false);  
         jButton2.setVisible(false);  
         jButton3.setVisible(false);  
         jButton4.addActionListener(this);  
         jButton5.addActionListener(this);  
 }  
 void setCarro(Carro[] p)  
    {  
         c1 = p;  
     }  
   
     public void actionPerformed(ActionEvent e)  
     {  
         int Maior=0;  
         int MaiorV= 0;  
         int MaiorValor=0;  
         int MaiorA=0;  
         if(e.getSource()==jButton5)  // Aqui quando eu apertar o botão vai percorrer a Array e colocar no campo maior Ano do carro. Quando eu arrumo aqui o outro não funciona.  
         {  
             for( int x =0; x<c1.length; x++)  
             {  
                 if(c1[x].getAno()>MaiorA){  //aqui eu ja disse antes
                 Maior= x;
                 MaiorA = c1[x].getAno();  
                 }
             }  
             jTextField3.setText( Integer.toString(c1[Maior].getAno()));  //isso eu vi agora
             jTextField2.setText("");  
         }  
         else if(e.getSource()==jButton4)// aqui coloca Maior valor.   
        {  
             for(int x=0; x<c1.length; x++)  
             {  
                 if(c1[x].getValor()>MaiorV)  //aqui tambem tava errado
                 {  
                    MaiorValor = x;  
                    MaiorV = c1[x].getValor();  
                 }  
             }  
              jTextField2.setText( Integer.toString(c1[MaiorValor].getValor()));  //tambem vi isso so agora
              jTextField3.setText("");  
          }  
            
         }

tenta agora... deve estar funcionando

tauame

eu editei o meu ultimo post, dá uma olhada no código e ve se nao dá certo agora…

H

Não funcionou ainda. Só funciona quando eu coloco “count” aqui nesta linha

if(e.getSource()==jButton5)
        {
            for( int x =0; x<c1.length; x++)
            {
                if(c1[x].getValor()>MaiorA)
                Maior= x;
                MaiorA = c1[x].getValor();

            }
            jTextField3.setText( Integer.toString(c1[count].getValor())); // Eu coloquei count e apareceu o maior valor no campo. Mas não tem nada a ver esse count. Se eu colocar em cima tambem vai dar erro. 
            jTextField2.setText("");
H

Aquele teu que vc acabou de fazer ao compilar não gera erros so quando eu aperto no botão correspondente não aparece nada no campo e embaixo do netbeens aparece um monte de linhas vermelhas.

tauame

faz o seguinte, tenta imprimir assim:

jTextField3.setText( Integer.toString(MaiorA));
jTextField2.setText("");
H

Colega agora funcionou tá aparecendo os valores Muito Obrigado por enquanto. Mas só que tem um problema. No campo valor ao invés de aparecer o maior valor está aparecendo o menor Valor. porque está acontecendo isso?

H

Como eu faço para ordenar ano e valor tambem?. Dá uma dica.

tauame

hmm… estranho ele estar mostrando o menor valor, isso não faz sentido, confira aí no seu código se o “if” que testa se o valor é maior está assim: if(c1[x].getAno()>MaiorA)

e se isso não resolver, tenta inverter o sinal do teste pra “<”…

pra fazer uma ordenação eu sugiro você a dar uma olhada nos algoritimos de bubble sort, são os mais simples para ordenação…

aqui vai um exemplo, aí é só você adaptar para o seu programa…

int vetor[] = new int[15]; // ( uma olhada  em como se declara um vetor q não to com muita certeza da sintaxe, to sem compilador aqui)
int aux;
/*
comandos para atribuir ao vetor os valores..
*/
for(int x=0; x<vetor.length; x++){
    for(int y=0; y < vetor.length; y++){
        if(vetor[y] > vetor[x]){
            aux = vetor[y];
            vetor[y] = vetor[x];
            vetor[x] = aux;
        }
    }
}
H

Olá colegas tem um linha que está comentada logo abaixo que esta com erro. Alguem poderia me dar uma mão. Eu quero ordenar esse vetor. Abraço

{
        int aux;

       if(e.getSource()==jButton6)
       {
           for(int x=0; x<c1.length; x++)
           {
              for (int y=0;y<c1.length; y++)
              {
                    aux = c1[y].getValor();
                    c1[y] = c1[x];
                     c1[x].getValor() = aux; // requeried value, found valor, unexpected type. Isso  quando eu compilo com o Netbeens
              }
tauame
halm:
Olá colegas tem um linha que está comentada logo abaixo que esta com erro. Alguem poderia me dar uma mão. Eu quero ordenar esse vetor. Abraço
{
        int aux;

       if(e.getSource()==jButton6)
       {
           for(int x=0; x<c1.length; x++)
           {
              for (int y=0;y<c1.length; y++)
              {
                    aux = c1[y].getValor();
                    c1[y] = c1[x];
                     c1[x].getValor() = aux; // requeried value, found valor, unexpected type. Isso  quando eu compilo com o Netbeens
              }

cara, vc nao pode atribuir ao retorno de um método alguma coisa... e mesmo que pudesse, isto esculhambaria o seu programa... ao certo, você deve trocar os objetos de lugar... (ah, e na ultima msg eu mandei errado o bubble sort, embora funcione ambos os jeitos, o mais correto é como vou mostrar agora):

{
        Carro aux;

       if(e.getSource()==jButton6)
       {
           for(int x=0; x<c1.length - 1; x++) //atenção aqui
           {
              for (int y=x+1; y<c1.length; y++) // e aqui
              {
                   if(c1[x].getValor() > c1[y].getValor()){     //você se esqueceu de testar se é necessário trocar as duas posições, agora está corrigido..
                       aux = c1[y];
                       c1[y] = c1[x];
                       c1[x] = aux; // agora deve estar rodando direito :)
                   }
              }
            }
         }
    }
Criado 7 de maio de 2010
Ultima resposta 12 de mai. de 2010
Respostas 14
Participantes 3