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)
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();
}
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 );
}
}