java – Minha calculadora a partir do while na posição 2, pula a inserção do primeiro valor alguém consegue me ajudar?

package Calculadora;

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

public class calculadora {
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úmerosnn");
                 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úmerosnn");
                clearBuffet(teclado);
                continue;
            }
      } 
            
    resultado = valor1 + valor2;
    System.out.println(resultado);
    
     while(opcao != 0) {   
    if (opcao == 2) {
        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úmerosnn");
            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úmerosnn");
            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úmerosnn");
                    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úmerosnn");
                    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úmerosnn");
                    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úmerosnn");
                    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();
        }
}

}