How do I continue the repetition until no S/N conditions are entered?

Asked

Viewed 60 times

0

I need that if none of the conditions’S',’s','N','n' is entered by the user the program keeps asking "Do you want to continue running? (S/N):"

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    DecimalFormat formatador = new DecimalFormat("0.00");

    Double precobruto,desconto,precoavista; 
    int numex;
    char opcao;

    System.out.print("Informe a quantidade de produtos:");
    numex = sc.nextInt();

    for(int i=0; i<=numex; i++){
    System.out.println("Insira o valor do produto:");   
    precobruto = sc.nextDouble();

    desconto = (precobruto*0.1);

    precoavista = precobruto - desconto;

    System.out.println("Preço bruto: "+formatador.format(precobruto));
    System.out.println("Preço a vista: "+formatador.format(precoavista));
    System.out.println("Desconto (10%): "+formatador.format(desconto));
    System.out.print("\n");
    System.out.println("Deseja continuar a execução?(S/N):");
    opcao = sc.next().charAt(0);

    if (opcao == 'n' || opcao == 'N'){
    System.exit(0);
}
    if (opcao == 's' || opcao == 'S'){
    continue;
}
    else{
    System.out.println("Deseja continuar a execução?(S/N):");
}
        }
    }
  • 3

    do... while is the solution

  • You can optimize this code, but for that, you need to explain what you want with this code first.

2 answers

5


Just use the.. while:

do {

//o codigo a ser repetido caso a condição nao atenda

while(opcao != 'n' || opcao != 'N');

Thus, it is not necessary to validate S or s because while will loop until the user informs the indicated chars.

1

You can use the repeat loop do while. The do while performs a function first and checks until the condition is false to stop the execution.

Take a look here to understand more sinking https://www.devmedia.com.br/while-e-do-while-lacos-de-repeticoes-estrutura-da-linguagem-parte-1/18870

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

DecimalFormat formatador = new DecimalFormat("0.00");

Double precobruto,desconto,precoavista; 
int numex;
char opcao;

do {

System.out.print("Informe a quantidade de produtos:");
numex = sc.nextInt();

for(int i=0; i<=numex; i++){
System.out.println("Insira o valor do produto:");   
precobruto = sc.nextDouble();

desconto = (precobruto*0.1);

precoavista = precobruto - desconto;

System.out.println("Preço bruto: "+formatador.format(precobruto));
System.out.println("Preço a vista: "+formatador.format(precoavista));
System.out.println("Desconto (10%): "+formatador.format(desconto));
System.out.print("\n");
System.out.println("Deseja continuar a execução?(S/N):");
opcao = sc.next().charAt(0);

if (opcao == 'n' || opcao == 'N'){
System.exit(0);

} while (opcao != 'n' || opcao != 'N')
  • I added while(option != 'n' || option != 'N'){ System.out.println("Do you want to continue running?(S/N):"); option = sc.next(). charAt(0); } but it does not reply to’S', 'N'

  • @Can Gustavolopes answer what I asked below your question? That code of yours can be improved, there’s a lot of unnecessary stuff in it, depending on the goal

Browser other questions tagged

You are not signed in. Login or sign up in order to post.