Erro na hora de compilar

4 respostas
Gabriel_Davi
Olá galera, estou iniciando em JAVA e tenho que desenvolver um programa que manipula uma tabela de cereais. O código já está todo desenvolvido, porém acontece um erro no momento da compilação. Segue o código:
// Programa que manipula uma tabela de cereais

public class ManipulaCereais
{ public static void main(String args[])
  {
  
  // Declaração das variáveis
  int n;
  int i;
  int j;
  int ano[];
  int prod[][];
  int prodtotal[];
  String cereal[];
  int prodanual[];
  String cerealx;
  int pos;
  int anoQ;
  int maior;
  int anomaior;
  
  
  // Leitura da quantidade de cereais
  System.out.println("Entre com a quantidade de cereais");
  n = EasyIn.getInt();
  
  // Criação dos vetores e matriz
  
  cereal = new String [n+1];
  ano = new int [5];
  prod = new int[n][4];
  prodtotal = new int[n];
  prodanual= new int[n];
  
  // Leitura do vetor ano
  
  for(j=0;j<n;j++)
  { System.out.println("Entre com o ano"+(j+1)+";");
    ano[j] = EasyIn.getInt();
  }
    // Leitura dos cereais e respectivas produções
    
    for(i=0;i<n;i++)
    {System.out.println("Entre com o nome do cereal");
      cereal[i] = EasyIn.getString();
      for(j=0;j<n;j++)
      {System.out.println("Produção do ano"+ano[j]+":");
        prod[i][j] = EasyIn.getInt();}
    }
    // ProdTotal
   
    for(i=0;i<n;i++)
    {prodtotal[i]=0;
      for(j=0;j<n;j++)
      {prodtotal[i] = prodtotal[i]+prod[i][j];
    }
    }
    
    // Geração do vetor ProdAnual
      prodanual = new int[4];
    for(j=0;j<n;j++)
    {prodanual[j]=0;
      for(i=0;i<n;i++)
      {prodanual[j]= prodanual[j]+prod[i][j];
      }
    }
    
   // Impressão dos nomes dos cereais e respectivas produções totais
    System.out.println("Produção total dos cereais");
    for(i=0;i<n;i++)
    {System.out.println("Cereal=" +cereal[i]);
      System.out.println("Produção total="+prodtotal[i]);
    }
    
    // Impressão da produção anual de cada ano
    System.out.println("Produção total anual");
      for(j=0;j<n;j++)
    {System.out.println("Ano="+ano[j]);
      System.out.println("Produção anual="+prodanual[j]);
}
    
    // Impressão da produção de cada ano de um dado cereal cujo nome é lido
    
   System.out.println("Entre com o nome de um cereal");
  cerealx = EasyIn.getString();
  cereal[n] = cerealx;
  pos = 0;
                      while(!cerealx.equals(cereal[pos]));
                      { pos = pos+1;}
                      if(pos==n)
                      { System.out.println("Cereal não encontrado");}
                      else{System.out.println("Produção em cada ano");}
                          for(j=0;j<n;j++)
                          {System.out.println("Ano=" +ano[j]);
                            System.out.println("Produção="+prod[pos][j]);
                          }
     // Impressão da produção anual de um dado lido
      System.out.println("Entre com o ano cuja produção anual deseja obter");
      anoQ= EasyIn.getInt();
      ano[4]= anoQ;
      pos = 0;
       while(!anoQ.equals(ano[pos]))
      {pos= pos+1;}
      if(pos==4)
      { System.out.println("Ano não encontrado");}
        else{System.out.println("Produção Anual="+prodanual[pos]);
        }
        
        // Determinação do ano de maior produção de um dado cereal cujo nome é lido
        
        System.out.println("Entre com o nome do cereal");
        cerealx= EasyIn.getString();
        pos=0;
        cereal[pos]=cerealx;
        while(!cerealx.equals(cereal[pos]))
        {pos=pos+1;}
        if(pos==n)
        {System.out.println("Cereal não encontrado");}
          else{maior=1;
               anomaior=1;
               for(j=0;j<n;j++)
               {if
                 (prod[pos][j]>maior)
               { maior= prod[pos][j];
                 anomaior=ano[j];
               }
               }
          }
System.out.println("Maior prdoução="+maior);
System.out.println("Ano de maior prdoução="+anomaior);
}
}

Nessa parte, na linha 102 :
[while(!anoQ.equals(ano[pos]))
ta acontecendo o seguinte erro:
Error: int cannot be dereferenced

O que pode ser !?

Abraço e obrigado desde ja :wink:

4 Respostas

T

a matriz ano eh uma inteira, como q vc me quer dar um equals ?

elomarns

A variável anoQ é uma variável primitiva int, e varíaveis primitivas não armazenam referências, logo não podem ser usadas para chamarem métodos, como por exemplo o método equals. Para comparar números inteiros em relação à igualdade você deve usar == ou !=. Sendo assim, substitua a instrução while(!anoQ.equals(ano[pos])) pela instrução while(anoQ != ano[pos]).

erickcellani

é isso ae…

int é primitivo… naum tem métodos!!! então deve ser comparado com == e naum com .equals("") :slight_smile:

Gabriel_Davi

Valeuuu mesmo gente (Y)

Criado 23 de maio de 2007
Ultima resposta 23 de mai. de 2007
Respostas 4
Participantes 4