Duvidas sobre como utilizar uma variável do tipo inteiro no método equals, dentro de um while
12 respostas
I
infocastell
publicstaticbooleaninserirdados(){try{// é uma tentativa, if deu certo faça.BufferedWritercadastronumeros=null;Stringadicionar=JOptionPane.showInputDialog(“Adicionarnovosdadosnoarquivoexistente?(S/N)”);if(adicionar.equalsIgnoreCase(“S”)){//Abre o arquivo completando o que ja existe nelecadastronumeros=newBufferedWriter(newFileWriter(newFile(NOME_ARQUIVO),true));}else{//Abre o arquivo zerando o seu conteudocadastronumeros=newBufferedWriter(newFileWriter(newFile(NOME_ARQUIVO)));}intnumeros=Integer.parseInt(JOptionPane.showInputDialog(“DigiteumnúmeroouENTERparasair”));//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(“DigiteumnúmeroouENTERparasair”));}// 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(IOExceptione){// se caso não consegue abrir o arquivo, por algum erro.
}//fimdotry/catchreturnfalse;
}
}
preciso de ajuda no método que está em negrito e comentado //
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
infocastell
publicstaticbooleaninserirdados(){try{// é uma tentativa, if deu certo faça. BufferedWritercadastronumeros=null;Stringadicionar=JOptionPane.showInputDialog("Adicionar novos dados no arquivo existente? (S/N)");if(adicionar.equalsIgnoreCase("S")){//Abre o arquivo completando o que ja existe nele cadastronumeros=newBufferedWriter(newFileWriter(newFile(NOME_ARQUIVO),true));}else{//Abre o arquivo zerando o seu conteudo cadastronumeros=newBufferedWriter(newFileWriter(newFile(NOME_ARQUIVO)));}intnumeros=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(IOExceptione){// se caso não consegue abrir o arquivo, por algum erro. }// fim do try / catch returnfalse;}}
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
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:
importjava.io.*;// tem que importar essa bibliotecaimportjavax.swing.*;publicclassTrabalho3{staticfinalStringNOME_ARQUIVO="CADASTRONUMEROS.TXT";publicstaticvoidmain(Stringargs[]){intescolha=1;while(escolha>0&&escolha<2){intopcao=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){case1: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;}}}publicstaticbooleaninserirdados(){try{// é uma tentativa, if deu certo faça.BufferedWritercadastronumeros=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. */Stringadicionar=JOptionPane.showInputDialog("Adicionar novos dados no arquivo existente? (S/N)");if(adicionar.equalsIgnoreCase("S")){//Abre o arquivo completando o que ja existe nelecadastronumeros=newBufferedWriter(newFileWriter(newFile(NOME_ARQUIVO),true));}else{//Abre o arquivo zerando o seu conteudocadastronumeros=newBufferedWriter(newFileWriter(newFile(NOME_ARQUIVO)));}intnumeros=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(IOExceptione){// se caso não consegue abrir o arquivo, por algum erro.}// fim do try / catch returnfalse;}}
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
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?
R
rof20004
idente seu codigo por favor.
sowyer
Qual é o erro que dá ?
I
infocastell
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?
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
infocastell
rof20004:
idente seu codigo por favor.
importjava.io.*;// tem que importar essa biblioteca importjavax.swing.*;publicclassTrabalho3{staticfinalStringNOME_ARQUIVO="CADASTRONUMEROS.TXT";publicstaticvoidmain(Stringargs[]){intescolha=1;while(escolha>0&&escolha<2){intopcao=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){case1: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;}}}publicstaticbooleaninserirdados(){try{// é uma tentativa, if deu certo faça. BufferedWritercadastronumeros=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. */Stringadicionar=JOptionPane.showInputDialog("Adicionar novos dados no arquivo existente? (S/N)");if(adicionar.equalsIgnoreCase("S")){//Abre o arquivo completando o que ja existe nele cadastronumeros=newBufferedWriter(newFileWriter(newFile(NOME_ARQUIVO),true));}else{//Abre o arquivo zerando o seu conteudo cadastronumeros=newBufferedWriter(newFileWriter(newFile(NOME_ARQUIVO)));}intnumeros=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(IOExceptione){// se caso não consegue abrir o arquivo, por algum erro. }// fim do try / catch returnfalse;}}
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.