Programa a partir do while 02, está pulando a inserção do primeiro valor, alguém consegue me ajudar?

package calc;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Calc {
public static void main(String [] args) { float valor1=0; float valor2=0; float opcao=5; float resultado; //boolean loop = true;

System.out.println("-Seja bem-vindo(a) a sua calculadora-");
System.out.println("Escolha uma o por favor!!");
System.out.println("1. Soma");  
System.out.println("2. Subtracao");  
System.out.println("3. Multiplicacao");  
System.out.println("4. Divisao");  
System.out.println("0. Sair");  
System.out.println("Operação: "); 



Scanner teclado = new Scanner(System.in);
  opcao = teclado.nextFloat();
  clearBuffet(teclado);

    
  while(opcao != 0) {
      if (opcao == 1) {
        System.out.print("Digite o primeiro valor: ");
         clearBuffet(teclado);

        try {
            valor1 = teclado.nextFloat();
            clearBuffet(teclado);
        }catch(InputMismatchException e) {
            System.out.print("Vamos começar denovo, digite apenas números\n\n");
             clearBuffet(teclado);
            continue;
        }
      }
     System.out.print("Digite o segundo valor: ");
        try {
            valor2 = teclado.nextFloat();
            clearBuffet(teclado);
            break;
        }catch(InputMismatchException e) {
            System.out.print("Vamos começar denovo, digite apenas números\n\n");
            clearBuffet(teclado);
        }
  } 
        
resultado = valor1 + valor2;
System.out.println(resultado);
clearBuffet(teclado);

 while(opcao != 0) {   
if (opcao == 2) {
    
    System.out.print("Digite o primeiro valor: ");
    try {
        valor1 = teclado.nextFloat();
        clearBuffet(teclado);
    }catch(InputMismatchException e) {
        System.out.print("Vamos começar denovo, digite apenas números\n\n");
        clearBuffet(teclado);
        continue;
    }

 System.out.print("Digite o segundo valor: ");
 clearBuffet(teclado);
    try {
        valor2 = teclado.nextFloat();
        clearBuffet(teclado);
        break;
    }catch(InputMismatchException e) {
        System.out.print("Vamos começar denovo, digite apenas números\n\n");
        clearBuffet(teclado);
        continue;
    }
}
 }
resultado = valor1 - valor2;
System.out.print(resultado);
  
 while(opcao != 0) {  
  if (opcao == 3) {
            System.out.print("Digite o primeiro valor: ");
             clearBuffet(teclado);
            try {
                valor1 = teclado.nextFloat();
            }catch(InputMismatchException e) {
                System.out.print("Vamos começar denovo, digite apenas números\n\n");
                clearBuffet(teclado);
                continue;
            }
          
         System.out.print("Digite o segundo valor: ");
         clearBuffet(teclado);

            try {
                valor2 = teclado.nextFloat();
                break;
            }catch(InputMismatchException e) {
                System.out.print("Vamos começar denovo, digite apenas números\n\n");
                clearBuffet(teclado);
                continue;
        }
      } 

 }
      
resultado = valor1 * valor2;
System.out.print(resultado);

 while(opcao != 0) {
if (opcao == 4) {
      if (opcao == 1) {
            System.out.print("Digite o primeiro valor: ");
             clearBuffet(teclado);

            try {
                valor1 = teclado.nextFloat();
            }catch(InputMismatchException e) {
                System.out.print("Vamos começar denovo, digite apenas números\n\n");
                clearBuffet(teclado);
                continue;
            }
          
         System.out.print("Digite o segundo valor: ");
         clearBuffet(teclado);

            try {
                valor2 = teclado.nextFloat();
                break;
            }catch(InputMismatchException e) {
                System.out.print("Vamos começar denovo, digite apenas números\n\n");
                clearBuffet(teclado);
                continue;
            }
        }
      } 
else if (valor2 == 0) {
          System.out.println("Impossivel dividir por 0!!");
          
} else resultado = valor1 / valor2;
               System.out.print(resultado);

if (opcao >= 5){
System.out.println(“Opção invalida”);

}
}
}

private static void clearBuffet(Scanner scanner) {
// TODO Auto-generated method stub
if (scanner.hasNextLine()) {
scanner.nextLine();
}
}
}

amigo na minha opniao seria melhor usar switch case com um while pra fazer o lop do menu

vou colocar uma sugestão aqio!!
so postei o exemplo do caso um mas é so copiar o que esta no caso um pra todos os outros casos e ai é so alterar o operador pra cada uma

public class Calc{
public static void main(String[] args) throws InputMismatchException {
float valor1=0;
float valor2=0;
int opcao=1;
float resultado;
Scanner teclado = new Scanner(System.in);

    while (opcao != 0) {
        System.out.println("-Seja bem-vindo(a) a sua calculadora-");
        System.out.println("Escolha uma o por favor!!");
        System.out.println("1. Soma");
        System.out.println("2. Subtracao");
        System.out.println("3. Multiplicacao");
        System.out.println("4. Divisao");
        System.out.println("0. Sair");
        System.out.println("Operação: ");
        opcao = teclado.nextInt();

        switch (opcao){

            case 1:

                //primeiro valor caso 1
                try {
                        System.out.print("Digite o primeiro valor: ");
                        valor1 = teclado.nextFloat();

                } catch (InputMismatchException e) {
                        System.out.print("Vamos começar denovo, digite apenas números\n\n");
                }

                // segundo valor caso 1
                try {
                        System.out.print("Digite o segundo valor: ");
                        valor2 = teclado.nextFloat();

                } catch (InputMismatchException e) {
                        System.out.print("Vamos começar denovo, digite apenas números\n\n");
                }

            resultado = valor1 + valor2;
            System.out.println(resultado);
            resultado = 0;

        break;
        // fim caso 1


        case 2:

                //codigo caso 2

        break;
        //fim caso 2

        case 3:

                 //codigo caso 3

        break;
        //fim caso 3

        case 4:

                // codigo caso 4

        break;
        // fim caso 4;


        case 0:
            System.out.println("Sistema Finalizado...!");
            System.exit(0);

        break; //fim caso 0



        }//fim switch

    }// fim while


}// fim main

}// fim Calc

1 curtida