Duvidas sobre como utilizar uma variável do tipo inteiro no método equals, dentro de um while

12 respostas
I
public static boolean inserirdados (){

try{// é uma tentativa, if deu certo faça.

BufferedWriter cadastronumeros = null;

String adicionar = JOptionPane.showInputDialog(Adicionar novos dados no arquivo existente? (S/N));

if (adicionar.equalsIgnoreCase(S)) {

//Abre o arquivo completando o que ja existe nele

cadastronumeros = new BufferedWriter(new FileWriter(new File(NOME_ARQUIVO),true));

}else {

//Abre o arquivo zerando o seu conteudo

cadastronumeros = new BufferedWriter(new FileWriter(new File(NOME_ARQUIVO)));

}

int numeros = Integer.parseInt(JOptionPane.showInputDialog(Digite um número ou ENTER para sair));

//inverte o resultado, enquanto for for diferente de 0, então continua.

while (!numeros.equals(numeros)){// aqui que é o problema, pois dá uma erro ao compilar,

cadastronumeros.write(numeros);// irá receber a variável nome,

cadastronumeros.newLine();// irá para a próxima linha, isso faz com que coloque os dados por linha.

numeros = Integer.parseInt(JOptionPane.showInputDialog(Digite um número ou ENTER para sair));

} // fim do while

// tirou de dentro do buffer ou handler e jogou para o arquivo e salvou dentro do arquivo no hd.

cadastronumeros.close(); // fecha o arquivo

}catch (IOException e){// se caso não consegue abrir o arquivo, por algum erro.
} // fim do try / catch

return false;

}

}

preciso de ajuda no método que está em negrito e comentado //

12 Respostas

Fellipex

Cara posta dentro da tag code, isso parece uma sopa de letras. Para sua duvida, você não postou o erro que acontece, mas pelo que vi do seu código, não se utiliza equals para comparar variáveis do tipo inteiro, equals é utilizado para comprar strings. Para comparar valores inteiros basta utilizar o “==” .
Att

DaniloAndrade

boa tarde!

Fellipex, vou fazer uma pequena correção no que vc disse.

o equals é usada pra comparar objetos não apenas string.

pra comparar tipos primitivos (int, long, float, double, char… etc) usa-se o == como o fellipex disse.

esta dando erro de compilação porque a variável do tipo int numeros não é um objeto e por isso não possui o metodo equals que todas as classes possuem.

e mesmo que sua variável numeros fosse um objeto a sua logica estaria errada porque vc esta comparando numeros com ele mesmo e nesse caso e ele nunca entraria no seu while por que sempre seria true e como vc ta negando ficaria false.

acho que é isso

Fellipex

É verdade, tanto é que não não ocorre erro de compilação comparando 2 Integers(pois são objetos), apesar de sempre dar false. Mas valeu ai pela correção.
Att

I
public static boolean inserirdados (){ 
try{// é uma tentativa, if deu certo faça. 
BufferedWriter cadastronumeros = null; 
String adicionar = JOptionPane.showInputDialog("Adicionar novos dados no arquivo existente? (S/N)"); 
if (adicionar.equalsIgnoreCase("S")) { 
//Abre o arquivo completando o que ja existe nele 
cadastronumeros = new BufferedWriter(new FileWriter(new File(NOME_ARQUIVO),true)); 
}else { 
//Abre o arquivo zerando o seu conteudo 
cadastronumeros = new BufferedWriter(new FileWriter(new File(NOME_ARQUIVO))); 
} 
int numeros = Integer.parseInt(JOptionPane.showInputDialog("Digite um número ou ENTER para sair")); 
//inverte o resultado, enquanto for for diferente de 0, então continua. 
while (!numeros.equals(numeros)){// aqui que é o problema, pois dá uma erro ao compilar, 
cadastronumeros.write(numeros);// irá receber a variável nome, 
cadastronumeros.newLine();// irá para a próxima linha, isso faz com que coloque os dados por linha. 
numeros = Integer.parseInt(JOptionPane.showInputDialog("Digite um número ou ENTER para sair")); 
} // fim do while 
// tirou de dentro do buffer ou handler e jogou para o arquivo e salvou dentro do arquivo no hd. 
cadastronumeros.close(); // fecha o arquivo 
}catch (IOException e){// se caso não consegue abrir o arquivo, por algum erro. 

} // fim do try / catch 
return false; 
} 
}

preciso de ajuda while (!numeros.equals()), como faço isso? que comparação posso fazer?

DaniloAndrade

numeros é um int (tipo primitivo) então não use equals

ex

while(numeros != 0){ // compare com o numero que vc quer
//resto do codigo aqui
}
I

DaniloAndrade:
numeros é um int (tipo primitivo) então não use equals

ex

while(numeros != 0){ // compare com o numero que vc quer //resto do codigo aqui }

hei, valeu mesmo, deu certo. Só mais uma pergunta é que meus números que eu inseri não está salvando dentro do aquivo CADASTRONUEROS.txt, vc sabe porquê?

segue o código completo do meu algoritmo:

import java.io.*;// tem que importar essa biblioteca
  import javax.swing.*;
  public class Trabalho3{
  
  static final String NOME_ARQUIVO = "CADASTRONUMEROS.TXT";
  
   public static void main(String args[]){
          int escolha = 1;
          while (escolha > 0 && escolha < 2) {
          int opcao = Integer.parseInt(JOptionPane.showInputDialog( "MENU \n"
            + "1) Solicitar um número e escreva no arquivo\n"
            + "2) Solicitar um número de linha do arquivo e mostrar o número armazenado nesta linha \n"
            + "3) Solicitar um número e informar em qual linha do arquivo este número está. \n"
            + "4) Mostre todos os dados do arquivo indicando o número da linha e número armazenado \n"
			+ "5) Mostre todos os dados do arquivo indicando o número da linha e número armazenado nesta linha. Em apenas uma mensagem. \n"
			+ "6) - Sair"));
			
		  switch(opcao){
            case 1:
	           inserirdados(); 
               JOptionPane.showMessageDialog(null, "Não abriu arquivo para escrita!");			   
	        break;
	  
	        /*case 2:
	                
	        break;
				 
			case 3:
				      
	        break;
				 
			case 4:
				   
	        break;

			case 5:
			
	        break;					
*/
            default:
			System.exit(0);	                     				
	        break;				 
	            
           }
        }
    }   
  public static boolean inserirdados (){
  try{// é uma tentativa, if deu certo faça.
     BufferedWriter cadastronumeros = null; /*buffereadwriter é uma classe interna, e é um tipo de handler ou buffer, e está
	 dentro da biblioteca io.*, sendo assim a variável agenda é do tipo bufferredWWriter. */
     String adicionar = JOptionPane.showInputDialog("Adicionar novos dados no arquivo existente? (S/N)");
     if (adicionar.equalsIgnoreCase("S")) {
     //Abre o arquivo completando o que ja existe nele
     cadastronumeros = new BufferedWriter(new FileWriter(new File(NOME_ARQUIVO),true));
     }else {
//Abre o arquivo zerando o seu conteudo
     cadastronumeros = new BufferedWriter(new FileWriter(new File(NOME_ARQUIVO)));
    }
    int numeros = Integer.parseInt(JOptionPane.showInputDialog("Digite um número ou ENTER para sair"));
   //inverte o resultado, enquanto for for diferente de 0, então continua. 
   while (numeros!= 0){
        cadastronumeros.write(numeros);// irá receber a variável nome, 
        cadastronumeros.newLine();// irá para a próxima linha, isso faz com que coloque os dados por linha.
        numeros = Integer.parseInt(JOptionPane.showInputDialog("Digite um número ou ENTER para sair"));
    } // fim do while
	// tirou de dentro do buffer ou handler e jogou para o arquivo e salvou dentro do arquivo no hd.
  cadastronumeros.close(); // fecha o arquivo  
  }catch (IOException e){// se caso não consegue abrir o arquivo, por algum erro.
        
   } // fim do try / catch    
   return false;  
}
}
I

DaniloAndrade:
numeros é um int (tipo primitivo) então não use equals

ex

while(numeros != 0){ // compare com o numero que vc quer //resto do codigo aqui }

Oi Danilo, podes me ajudar, please,

Att.
andreza

I

infocastell:
DaniloAndrade:
numeros é um int (tipo primitivo) então não use equals

ex

while(numeros != 0){ // compare com o numero que vc quer //resto do codigo aqui }

Oi Danilo, podes me ajudar, please,

Att.
andreza

oi Danilo, não consigo inserir os dados inseridos no arquivo CADASTRONUMEROS.TXT, podes me ajudar? :expressionless:

R

idente seu codigo por favor.

sowyer

Qual é o erro que dá ?

I

infocastell:
infocastell:
DaniloAndrade:
numeros é um int (tipo primitivo) então não use equals

ex

while(numeros != 0){ // compare com o numero que vc quer //resto do codigo aqui }

Oi Danilo, podes me ajudar, please,

Att.
andreza

oi Danilo, não consigo inserir os dados inseridos no arquivo CADASTRONUMEROS.TXT, podes me ajudar? :expressionless:

oi Danilo, consegui, mas tive que passar o numero para o tipo string, isso que não achei legal, ficou sem nexo. mas deixa se está rodando td bem, mas gostaria de saber se tem um jeito de fazer com números primitivos.

att.

I
rof20004:
idente seu codigo por favor.
import java.io.*;// tem que importar essa biblioteca  
  import javax.swing.*;  
  public class Trabalho3{  
    
  static final String NOME_ARQUIVO = "CADASTRONUMEROS.TXT";  
    
   public static void main(String args[]){  
          int escolha = 1;  
          while (escolha > 0 && escolha < 2) {  
          int opcao = Integer.parseInt(JOptionPane.showInputDialog( "MENU \n"  
            + "1) Solicitar um número e escreva no arquivo\n"  
            + "2) Solicitar um número de linha do arquivo e mostrar o número armazenado nesta linha \n"  
            + "3) Solicitar um número e informar em qual linha do arquivo este número está. \n"  
            + "4) Mostre todos os dados do arquivo indicando o número da linha e número armazenado \n"  
            + "5) Mostre todos os dados do arquivo indicando o número da linha e número armazenado nesta linha. Em apenas uma mensagem. \n"  
            + "6) - Sair"));  
              
          switch(opcao){  
            case 1:  
               inserirdados();   
               JOptionPane.showMessageDialog(null, "Não abriu arquivo para escrita!");               
            break;  
        
            /*case 2: 
                     
            break; 
                  
            case 3: 
                       
            break; 
                  
            case 4: 
                    
            break; 
 
            case 5: 
             
            break;                   
*/  
            default:  
            System.exit(0);                                       
            break;                 
                  
           }  
        }  
    }     
  public static boolean inserirdados (){  
  try{// é uma tentativa, if deu certo faça.  
     BufferedWriter cadastronumeros = null; /*buffereadwriter é uma classe interna, e é um tipo de handler ou buffer, e está 
     dentro da biblioteca io.*, sendo assim a variável agenda é do tipo bufferredWWriter. */  
     String adicionar = JOptionPane.showInputDialog("Adicionar novos dados no arquivo existente? (S/N)");  
     if (adicionar.equalsIgnoreCase("S")) {  
     //Abre o arquivo completando o que ja existe nele  
     cadastronumeros = new BufferedWriter(new FileWriter(new File(NOME_ARQUIVO),true));  
     }else {  
//Abre o arquivo zerando o seu conteudo  
     cadastronumeros = new BufferedWriter(new FileWriter(new File(NOME_ARQUIVO)));  
    }  
    int numeros = Integer.parseInt(JOptionPane.showInputDialog("Digite um número ou ENTER para sair"));  
   //inverte o resultado, enquanto for for diferente de 0, então continua.   
   while (numeros!= 0){  
        cadastronumeros.write(numeros);// irá receber a variável nome,   
        cadastronumeros.newLine();// irá para a próxima linha, isso faz com que coloque os dados por linha.  
        numeros = Integer.parseInt(JOptionPane.showInputDialog("Digite um número ou ENTER para sair"));  
    } // fim do while  
    // tirou de dentro do buffer ou handler e jogou para o arquivo e salvou dentro do arquivo no hd.  
  cadastronumeros.close(); // fecha o arquivo    
  }catch (IOException e){// se caso não consegue abrir o arquivo, por algum erro.  
          
   } // fim do try / catch      
   return false;    
}  
}
não tem erro, só os dados inseridos não vão para o arquivo CADASTRONUMEROS, então passei o numero para Int, então deu, mas queria deixar como declaro Int para numero.
Criado 21 de novembro de 2012
Ultima resposta 21 de nov. de 2012
Respostas 12
Participantes 5