Boa noite. Minha dúvida é a seguinte: Eu estava brincando com os códigos para testar o que to aprendendo. Tive um resultado legal, fazendo as coisas de cabeça sem consulta. Só que me bateu uma dúvida. A minha ideia foi simples, usei um “while” para dizer que enquanto eu disse que quero continuar somando o próximo número inserido seria somado ao total anterior e a tela me daria o novo valor. O que eu queria saber é se posso setar pro programa encerrar apenas se eu digitar “n”, já que digitando “y” o programa continua. Sendo assim, quanquer outra letra digitada eu queria que o programa dissesse: “Opção inválida. Digite y/n”
packageestudosaleatórios;importjava.util.Scanner;publicclassEstudosAleatórios{publicstaticvoidmain(String[]args){Scannert=newScanner(System.in);intx;intz=0;StringY="y";Stringres=Y;while(res.equals(Y)){System.out.print("Some um número com o anterior: ");x=t.nextInt();z+=x;System.out.println("A soma dos números digitados é: "+z);System.out.print("Continua? [y/n] ");res=t.next();}}}
é só colocar um while dentro do outro. Logo após a opção res=t.next(); você coloca while(!res.equals(Y) && !res.equals(n)).
Rodrigo_Void1 like
Na minha opinião vc só precisa um IF depois da leitura:
System.out.print("Continua? [y/n] ");res=t.next();if("n".equals(res)){
break;//vai parar seu laço.
}
staroski2 likes
Outra forma de implementar:
importjava.io.PrintStream;importjava.util.Scanner;publicclassEstudosAleatórios{privatestaticfinalScannerin=newScanner(System.in);privatestaticfinalPrintStreamout=System.out;publicstaticvoidmain(String[]args){try{EstudosAleatóriosprograma=newEstudosAleatórios();programa.executar();}catch(Throwablet){t.printStackTrace();}finally{System.exit(0);}}publicvoidexecutar(){intsoma=0;do{soma+=lerInteiro("Some um número com o anterior: ");;escrever("A soma dos números digitados é: "+soma);}while(continuar());}privatebooleancontinuar(){while(true){switch(lerTexto("Continua? [y/n] ")){case"y":returntrue;case"n":returnfalse;default:escrever("Opção inválida: \""+opcao+"\"");continue;}}}privatevoidescrever(Stringmensagem){out.println(mensagem);}privateintlerInteiro(Stringmensagem){returnInteger.parseInt(lerTexto(mensagem));}privateStringlerTexto(Stringmensagem){System.out.print(mensagem);returnin.nextLine();}}
D
diego12
Crie um método continuar:
publicstaticfinalScannerSCANNER=newScanner(System.in);publicstaticvoidmain(String[]args){do{System.out.println("Executou tarefa");}while(continuar());System.out.println("Fim");}publicstaticbooleancontinuar(){while(true){System.out.print("Continua? [y/n] ");res=SCANNER.next();// acho que é SCANNER.nextLine();switch(res){case"y":case"Y":returntrue;case"n":case"N":returnfalse;default:System.out.println("Entrada invalida");}}}
Jederson_Andre
Caraca… vc domina bem OO heim.
eu faria da forma mais simples possivel, rsrsrs, sem objetos
staroski
Não usei OO, só segreguei sua lógica em métodos distintos e tirei tudo de dentro do main.
R
RenanOsorio
Bom dia, na verdade eu só faria um sistema de if no seu codigo original, acredito que é desnecessário fazer uma classe só pra isso, mas se vc conseguiu isso que importa. vlw ahaha
RSM_RLB
Muito obrigado a todos. As respostas foram esclarescedoras e com elas tive várias alternativas para resolver isso (a maior parte delas que eu ainda não tinha estudado). Muito obrigado.