Dúvida sobre repetição

O código abaixo é bem simples, ele calcula médias: Recebe 3 notas, mostra o somatório, a média, que é a divisão por 3, e se esse valor for maior que 6 mostra aprovado, do contrário reprovado.

Ao invés de terminar o código assim que mostrar a condição de reprovado, queria que executasse novamente para receber as 3 notas e refazer o cálculo, até se encaixar na condição de aprovado, do contrário o código não termina. Desculpem se não expliquei direito.

package programa;
import javax.swing.JOptionPane;
public class DoWhile{
public static void main (String[] args){
String primeironumero = JOptionPane.showInputDialog(“Digite a primeira nota”);
String segundonumero = JOptionPane.showInputDialog(“Digite a segunda nota”);
String terceironumero = JOptionPane.showInputDialog(“Digite a terceira nota”);

    int numero1= Integer.parseInt(primeironumero);
    int numero2= Integer.parseInt(segundonumero);
    int numero3= Integer.parseInt(terceironumero);
    
    int soma = numero1+numero2+numero3;
    int media = soma/3;  
    
    if(media<6){JOptionPane.showMessageDialog(
    null,
            "O total das notas é "+soma +
                    "\n A média é "+media +
                    "\n Nova chance ",
            "Resultado",
    JOptionPane.PLAIN_MESSAGE);
    }
   
    else{JOptionPane.showMessageDialog(
    null,
            "O total das notas é "+soma +
                    "\n A média é "+media +
                    "\n Aprovado ",
            "Resultado",
    JOptionPane.PLAIN_MESSAGE);

}

}   

}

Ficarei grato pela ajuda.

Veja se ajuda…

boolean continuar = true;

while (continuar) {
    // todo o código vai aqui...

    String opcao = JOptionPane.showInputDialog("Deseja continuar? [true/false]");
    continuar = Boolean.parseBoolean(opcao);
}

Não entendi direito…
Eu coloco todo o código dentro do while?
A String opcao que você fez, eu coloco dentro do if e else ou fora junto ao código?

Tudo o que estiver no main, vai dentro do while…

As duas ultimas linhas ficam fora do if… pouco antes de terminar o while…

Me baseei na sua ideia e consegui.
Não coloquei as duas últimas linhas porque não quero que seja opcional, se não tirou 6 vai repetir até tirar.
Coloquei um System.exit(0); na condição aprovado, então o código só vai terminar quando essa linha for interpretada.

Obrigado pela ajuda, o código ficou assim:

package programa;
import javax.swing.JOptionPane;
public class DoWhile{
public static void main (String[] args){

    boolean continuar = true;
    while(continuar){
    
    String primeironumero = JOptionPane.showInputDialog("Digite a primeira nota");
    String segundonumero = JOptionPane.showInputDialog("Digite a segunda nota");
    String terceironumero = JOptionPane.showInputDialog("Digite a terceira nota");
    
    int numero1= Integer.parseInt(primeironumero);
    int numero2= Integer.parseInt(segundonumero);
    int numero3= Integer.parseInt(terceironumero);
    
    int soma = numero1+numero2+numero3;
    int media = soma/3;  
    
    if (media<6)
    
    {JOptionPane.showMessageDialog(
    null,
            "O total das notas é "+soma +
                    "\n A média é "+media +
                    "\n Nova chance ",
            "Resultado",
    JOptionPane.PLAIN_MESSAGE);
    
    }
   
    else
    
    {JOptionPane.showMessageDialog(
    null,
            "O total das notas é "+soma +
                    "\n A média é "+media +
                    "\n Aprovado ",
            "Resultado",
    JOptionPane.PLAIN_MESSAGE);
    System.exit(0);
    }
    
    }

}   

}

1 curtida

System.exit(0); é muito “forte” para sua aplicação, creio que somente um break resolva…

JOptionPane.PLAIN_MESSAGE);
break;

A diferença é que o System.exit(0) força a saida do programa, enquanto que o break apenas sai do while…

Fiz a mudança. Ainda sou muito iniciante em Java, é minha primeira interação no fórum.

Mas está “ligeiro” já, continue assim…

Recomendo essa apostila, muito boa, nela fala sobre while, break, etc…

Muito obrigado, vou baixar o conteúdo.

1 curtida