Java сканер ввода не работает с двойным - PullRequest
0 голосов
/ 06 августа 2020

У меня есть код Java ниже. Когда я ввожу целочисленное значение во ввод, он работает нормально (например, -4), но когда я ввожу 4.0, он ломается. Ошибка ниже. Может ли кто-нибудь помочь понять, что я делаю неправильно? Заранее благодарим.

import java.util.Scanner;

public class Main {

        public static void main(String[] args ) {
            int studentAge = 25;
            double studentGPA = 3.45;
            boolean hasPerfectAttendance = true;
            String studentName = "Ivan Grey";
            char studentFirstInitial = studentName.charAt(0);
            char studentLastInitial = 'G';

                        
            System.out.println(studentAge);
            System.out.println(studentGPA);
            System.out.println(studentFirstInitial);
            System.out.println(studentLastInitial);
            System.out.println(hasPerfectAttendance);
            System.out.println(studentName);
            System.out.println(studentFirstInitial + " " + studentLastInitial + 
            " has a GPA of " +  studentGPA);
            System.out.println("What do you want to update it to?");
            
            Scanner input = new Scanner(System.in);
            studentGPA = input.nextDouble();
            input.close();
            
            System.out.println(studentFirstInitial + " " + studentLastInitial + 
            " now has a GPA of " +  studentGPA);
        }
}

Ошибка: Исключение в потоке «main» java .util.InputMismatchException в java .base / java .util.Scanner.throwFor (Scanner . java: 939) в java .base / java .util.Scanner.next (Сканер. java: 1594) в java .base / java .util.Scanner.nextDouble (Сканер . java: 2564) на Main.main (Main. java: 24)

1 Ответ

0 голосов
/ 06 августа 2020

Сканер использует числовой формат языкового стандарта системы, поэтому, если вы запустите эту программу на компьютере с французским языком, он ожидает, что вы напишете 4,0.

Чтобы сделать языковой стандарт сканера независимым, добавьте звоните useLocale:

Scanner input = new Scanner(System.in);
input.useLocale(Locale.ROOT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...