Como consigo resolver, sou iniciante no java!

Eu estava fazendo uns exercicios do beecrowd quando escrevi esse código:


import java.util.Scanner;
import java.util.Locale;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        Locale.setDefault(Locale.US);
        double A = sc.nextDouble();
        double B = sc.nextDouble();
        double media = (A + B) / 2;
        System.out.printf("MEDIA = %.5f\n" +media);



        sc.close();
    }

}

mas a a mensagem de erro esta dizendo que tem algum erro no scanner, como consigo resolver?

Segue a mensagem:
Exception in thread “main” java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:964)
at java.base/java.util.Scanner.next(Scanner.java:1619)
at java.base/java.util.Scanner.nextDouble(Scanner.java:2590)
at media.Media.main(Media.java:11)

Aceito dicas de como melhorar meu código

import java.util.Locale;
import java.util.Scanner;

public class Programa {

public static void main(String[] args) {

	Scanner sc = new Scanner(System.in);
	Locale.setDefault(Locale.US);
	
            // Para fazer o input dos valores no terminal utilize a "," (vírgula) e não o ponto "."
            // Exemplo n1: 3,5 e n2: 2,5
	System.out.printf("n1: ");
	double A = sc.nextDouble();
	
	System.out.printf("n2: ");
	double B = sc.nextDouble(); 
	
	double media = (A + B) / 2;
           // Quando é utilizado printf é utilizado a " , " virgula para fazer a separação entre a variável e o texto
	System.out.printf("MEDIA = %.5f\n", media); // Alterado de "+" (concatenação) por "," (vírgula)
	sc.close();
}

}

1 curtida

Obrigado pela ajuda mano, mas deu erro no teste pq me passaram os parametros errados

1005-a.out → 1005-a.solVIEWED

@@ -1 +1 @@
1 - MEDIA = 6.85000
1 + MEDIA = 7.66818

1005-b.out → 1005-b.solVIEWED

@@ -1 +1 @@
1 - MEDIA = 3.55000
1 + MEDIA = 4.84091

Leia dados usando nextLine() e converta para o tipo numérico desejado. Fazendo assim vc evita deixar dados no buffer de entrada e não precisa se preocupar com locale. O problema (1005) inclusive fornece a entrada usando pontos como separador decimal. Sobre sua solução, você não leu o enunciado apropriadamente. O problema pede uma média ponderada, não uma média aritmética.

import java.io.*;
import java.util.*;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        Scanner scan = new Scanner( System.in );
        double n1 = Double.parseDouble( scan.nextLine() );
        double n2 = Double.parseDouble( scan.nextLine() );
        double media = ( n1 * 3.5 + n2 * 7.5 ) / 11.0;
        System.out.printf( "MEDIA = %.5f\n", media );
    }
 
}
1 curtida

Obrigado pela ajuda