Entrada de dados em .txt - parar de solicitar a entrada quando for inserida uma linha em branco
10 respostas
bgomes06
Boa noite!
Todo grande desafio começa com o primeiro passo, o meu vem com uma pergunta junto
Pessoal, eu estou com uma dúvida. Vou postar o código abaixo que funciona assim: eu digito linhas, pressiono Enter, e quando eu paro a execução é gerado um arquivo texto com o conteúdo. Meu problema está em, ao invés de parar a execução, eu gostaria que uma linha em branco (ou enter duas vezes) encerrasse a execução e gerasse o arquivo com o conteúdo digitado. Segue:
packageteste;importjava.io.*;publicclassEntradaTexto{publicstaticvoidmain(String[]args){digitarTeclado();}publicstaticvoiddigitarTeclado(){Stringdestino="";destino="C:\\temp\\log.txt";Stringlinha="";Stringteste="";InputStreamReaderisr=newInputStreamReader(System.in);BufferedReaderin=newBufferedReader(isr);System.out.println("Digite algo no console e tecle enter");try{FileWritero=newFileWriter(destino);PrintWriterout=newPrintWriter(o);while((linha=in.readLine())!=null){System.out.println(linha);//tentativa de sair #failif(linha==""){System.out.println("Sai do loop!");break;}out.println(linha);}out.flush();o.close();}catch(Exceptione){e.getMessage();}}}
Como eu posso solucionar este problema? Tentei utilizar um if com break e nada…
Ah se tiverem algo a comentar como eu poderia ter feito melhor, eu ficarei imensamente grato! Sou novo no mundo Java, e estou gostando muito dessa linguagem! E crítica é sempre bom!
para comparação de string sempre utilize o método equals.
bastides
No java não da pra comprar string usando o == …tem que usar o equals…
Mas debuga seu programa…e ve quando você da enter o que vem na string? vem string vazia ("") ou string com espaço (" “) ou quebra de linha (”\n")?
depois de descobrir o que vem na string quando você aperta enter…ai é só colocar isso no seu if comparando com equals ao invés de == que vc consegue alterar o fluxo quando apertar enter…certo?
[]'s
bgomes06
Paulohms, Bastides, obrigado pela ajuda e pela explicação!
Quanto a solução eu utilizei o “” mesmo:
if(linha.equals("")){
Sendo assim o programa ficou correto, é só eu não digitar nada e apertar o Enter que o programa foi finalizado e gerou o .txt com os dados digitados.
Muito obrigado!
Att.
Bruno.
bastides
Então o erro era só o == ao invés do equals…achei que podia estar vindo algo diferente de “” na string quando apertava enter.
[]'s
ViniGodoy
Melhor inda seria colocar:
if(linha.isEmpty())
bgomes06
Legal esse comando ViniGodoy, eu não conhecia essa maneira, mas tá anotado pra utilizar. Obrigado!
cadobry
paulohms:
Tente alterar o if para:
if(linha.equals("")){
ao inves de:
if(linha==""){
para comparação de string sempre utilize o método equals.
ficou uma duvida minha agora. sobre o equals
como seriam feitas as comparações dentro de um if exemplo. Este abaixo. q fiz.
int s, maior;
System.out.println("Digite o primeiro valor");intv1=sc.nextInt();System.out.println("Digite o segundo valor");intv2=sc.nextInt();System.out.println("Digite o terceiro valor");intv3=sc.nextInt();if(v2>v3){
System.out.equals(maior==v2);}
else{
System.out.equals(maior==v3);}
s=(v1+maior)/2;if(s>=6){
System.out.println("Aluno aprovado");
ou melhor método para isto seria usando Switch,
bgomes06
Olá cadobry!
Segundo o que eu entendi o equals é utilizado para comparar apenas string. Por exemplo:
if (nome.equals("Bruno"));
...
No seu caso você está usando números, então a comparação fica assim:
Se quiser utilizar a comparação se a nota v2 for igual à v3, utilize:
if(v2==v3){
...
}
Era esta sua dúvida?
Valeu!
bgomes vlw
exato. era sim. porem a duvida era eu achava que ele tbm poderia ser comparado com equals. que eu ja tinha testado desta forma que vc mencionou agora entendi q o equals so faz comparaçoes de strings. entre si.
te + Obrigado.
B
Bruno_Laturner
O equals é um método que serve para comparar um objeto é igual ao outro. A definição de igualdade depende do tipo do objeto.
Para comparações propriamente ditas, ordernar uma String em relação à outra, há o compareTo e o compareToIgnoreCase.
As classes wrappers de números e outros tipos primitivos do Java também tem estes mesmos métodos que citei, e milhares de outros. Veja sempre o JavaDoc de toda classe Java com que for trabalhar para aprender a usar a linguagem inteira.