Exception in thread "main" java.util.InputMismatchException quando insiro numero quebrado

Boa noite, estou aprendendo java e estou tentando fazer uma calculadora de notas.

Tudo funciona bem quando insiro números inteiros, mas a história muda quando eu insiro números quebrados, seja com virgula ou com ponto, ai recebo esse erro:

Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at Notas.main(Notas.java:15)

Esse é o meu código:

[code]import java.util.Scanner;
import java.util.Locale;

public class Notas{

public static void main(String[] args) {
    
    double nota1, nota2, nota3, nota4;

    Scanner sc=new Scanner(System.in);
    sc.useLocale(Locale.ENGLISH);

   System.out.println("Insira sua nota da prova 1: ");
    nota1 = sc.nextInt();

    if (nota1 >= 0 && nota1 <= 10 ) {
        nota1 = nota1;
    } else { 
        System.out.println("Insira um valor entre 0 e 10");
        System.out.println("Insira sua nota da prova 1: ");
        nota1 = sc.nextInt();
    } 
    
    System.out.println("Insira sua nota da prova 2: ");
    nota2 = sc.nextInt();

    if (nota2 >= 0 && nota2 <= 10) {
       nota2 = nota2;
    } else { 
        System.out.println("Insira um valor entre 0 e 10");
        System.out.println("Insira sua nota da prova 2: ");
        nota2 =sc.nextInt();
    } 
    System.out.println("Insira sua nota da prova 3: ");
    nota3 = sc.nextInt();

    if (nota3 >= 0 && nota3 <= 10) {
       nota3 = nota3;
    } else { 
        System.out.println("Insira um valor entre 0 e 10");
        System.out.println("Insira sua nota da prova 3: ");
        nota3 =sc.nextInt();
    } 
    System.out.println("Insira sua nota da prova 4: ");
    nota4 = sc.nextInt();

    if (nota4 >= 0 && nota4 <= 10) {
       nota4 = nota4;
    } else { 
        System.out.println("Insira um valor entre 0 e 10");
        System.out.println("Insira sua nota da prova 4: ");
        nota4 =sc.nextInt();
    } 

        double soma = nota1 + nota2 + nota3 + nota4;
        double divisao = soma/4;

        if (divisao <= 4.99) {
            System.out.println("Sua m\u00e9dia \u00e9: " + divisao);
            System.out.println("Voc\u00ea foi reprovado");
        } else {
            System.out.println("Sua m\u00e9dia \u00e9: " + divisao);
            System.out.println("Voc\u00ea foi aprovado");
        }
       
    
}

}
Alguém tem ideia do por que isso acontece?

De acordo com o erro:

Pode-se inferir o erro java.util.InputMismatchException que, segundo a documentação:

Lançado por um Scanner para indicar que o token recuperado não corresponde ao padrão para o tipo esperado ou que o token está fora do intervalo para o tipo esperado.
Ou seja, você está informando uma valor ‘fracionário’ quando era esperado um valor inteiro (sem parte fracionária. O método nextInt() permite ler um valor inteiro, portanto, não admite um número de ponto flutuante (“quebrado”). Se você pesquisar na documentação (Métodos dos Scanner), vais ver que há várias opções para leitura de ponto flutuante, a saber:

1 - nextFloat();
2 - nextDouble();
3 - nextBigDecimal();

Ah sim, não tinha reparado nisso.

Obrigado!