как вы знаете, метод nextDouble вызывает двойное значение
double nextDouble()
Returns the next token as a long. If the next token is not a float or is out of range, InputMismatchException is thrown.
попробуйте ввести в этом формате
например: 34,2 вместо 34,2
или попробуйтеконвертируйте ваш сканер в локаль
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
Экземпляр этого класса способен сканировать числа в стандартных форматах, а также в форматах локали сканера.Начальная локаль сканера - это значение, возвращаемое методом Locale.getDefault ();это может быть изменено с помощью метода useLocale (java.util.Locale). Локализованные форматы определяются в терминах следующих параметров, которые для конкретной локали берутся из объекта DecimalFormat этой локали, df, и его объекта и объекта DecimalFormatSymbols, dfs.
для получения дополнительной информации см. Java docs
все еще не работает, попробуйте выполнить синтаксический анализ, проверив тип ввода.
//************************************************************************
// MixedTypeInput
// This application demonstrates testing before reading to be
// sure to use the correct input method for the data.
//************************************************************************
import java.io.*;
import java.util.Scanner;
public class MixedTypeInput
{
public static void main(String[] args)
{
double number;
Scanner in = new Scanner(System.in);
System.out.println("Enter your gross income: ");
if (in.hasNextInt())
{
number = (double)in.nextInt();
System.out.println("You entered " + number);
}
else if (in.hasNextFloat())
{
number = (double)in.nextFloat();
System.out.println("You entered " + number);
}
else if (in.hasNextDouble())
{
number = in.nextDouble();
System.out.println("You entered " + number);
}
else
System.out.println("Token not an integer or a real value.");
}
}