Java输入问题

Java输入问题,java,input,Java,Input,今天我想做一个基本的练习,我遇到了这个问题: 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.nextDouble(Unknown Source) at Main.main(Ma

今天我想做一个基本的练习,我遇到了这个问题:

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.nextDouble(Unknown Source)
    at Main.main(Main.java:14)
代码如下:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double salary = 0;      // Salary excluded tax
        int tax = 0;            // % of tax
        double taxTot = 0;      // amount of tax
        double totSalary = 0;   // Salary with tax

        System.out.println("Salary, please : "); //Input salary
        salary = input.nextDouble();    

        if (salary <= 15000) {                          // <=15000
            tax = 10;
        } else if (salary>= 40000 && salary < 60000){       // >=40000
            tax = 20;
        } else {                                            // over > 60000
            tax = 30;
        }

        taxTot = salary / 100*tax;
        totSalary = salary - taxTot;
        System.out.println("Your tax is : " + taxTot + " Your salary : " + totSalary);
    }
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
双倍工资=0;//工资不含税
整数税=0;//%的税
double taxTot=0;//税额
double totSalary=0;//带税工资
System.out.println(“工资,请:”;//输入工资
工资=输入。下一步加倍();
如果(工资=40000)
税=20;
}否则{//超过60000
税=30;
}
税收总额=工资/100*税收;
totSalary=工资-税收Tot;
System.out.println(“您的税为:+taxTot+”您的工资:+totSalary”);
}
}

如果
扫描仪中的下一个输入与您尝试获取的类型不匹配,则会抛出
java.util.InputMismatchException
。以下是一个示例:

Scanner input = new Scanner("hello");
double salary = input.nextDouble();
因此,问题很可能源于代码中的
salary=input.nextDouble();
行, 原因是您没有输入有效的
double

要测试程序的行为,可以像我前面写的那样在
扫描器
构造函数中编写输入。 例如,您可以通过编写以下内容进行测试:

Scanner input = new Scanner("9000");

因此,
薪水将是9000英镑,因此,如果您通读了这篇文章,它会告诉您

基本上,您程序中的输入与扫描仪类型不匹配。因此,您可能会出现错误,因为您的输入不是双精度的

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);

5,0和5.0之间存在差异

我编译并运行了您的程序。我输入数字时没有错误。但是,当输入字母时,我得到了与您相同的错误,这并不奇怪。您的输入是什么?我似乎无法复制您的问题。复制并粘贴,对我来说效果很好。您何时提供了什么样的输入你运行这个应用程序?啊,我明白了,是的,现在我明白了输入问题。我试着像你说的那样,但当我尝试键入十进制数时,我会出错,我的意思是,如果我键入13.548,我会出错,程序停止运行。但是当我键入整数时,程序运行得很好。非常感谢。我现在知道问题出在哪里了。
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);