2015-04-05 116 views
-3

这是我收到的错误。我的Java程序编译没有任何错误,但不会完全运行

thread "main" java.util.InputMismatchException 
at java.util.Scanner.throwFor(Scanner.java:864) 
at java.util.Scanner.next(Scanner.java:1485) 
at java.util.Scanner.nextDouble(Scanner.java:2413) 

这是我正在使用的代码。我可以输入“姓氏”,但是我收到上面显示的错误消息。任何帮助将不胜感激。

import java.util.*; 
public class lab81 
{ 
public static void main(String args[]) 
{ 
Scanner input = new Scanner(System.in); 
System.out.print("Enter last name:"); 
double lastName; 
lastName = input.nextDouble(); 
System.out.print("Enter first name:"); 
double firstName; 
firstName = input.nextDouble(); 
System.out.print("Enter this years units:"); 
double thisYearsUnits; 
thisYearsUnits = input.nextDouble(); 
System.out.print("Enter last years units:"); 
double lastYearsUnits; 
lastYearsUnits = input.nextDouble(); 
double numberOfUnits = thisYearsUnits; 
final double UNITS1 = 1000; 
final double UNITS2 = 3000; 
final double UNITS3 = 6000; 
final double BONUS1 = 25; 
final double BONUS2 = 50; 
final double BONUS3 = 100; 
final double BONUS4 = 200; 
if(thisYearsUnits < lastYearsUnits) 
{ 
    double bonusAmount; 
    bonusAmount = 0; 
    System.out.println(lastName + ", " + firstName); 
    System.out.println("Bonus is $" + bonusAmount); 
} 
else if(numberOfUnits <= UNITS1) 

{ 
    double bonusAmount; 
    bonusAmount = BONUS1; 
    System.out.println(lastName + ", " + firstName); 
    System.out.println("Bonus is $" + bonusAmount); 
} 
else if(numberOfUnits <= UNITS2) 
{ 
    double bonusAmount; 
    bonusAmount = BONUS2; 
    System.out.println(lastName + ", " + firstName); 
    System.out.println("Bonus is $" + bonusAmount); 
} 
else if(numberOfUnits <= UNITS3) 
{ 
    double bonusAmount; 
    bonusAmount = BONUS3; 
    System.out.println(lastName + ", " + firstName); 
    System.out.println("Bonus is $" + bonusAmount); 
} 
else if(numberOfUnits > UNITS3) 
{ 
    double bonusAmount; 
    bonusAmount = BONUS4; 
    System.out.println(lastName + ", " + firstName); 
    System.out.println("Bonus is $" + bonusAmount); 
} 

} 
} 
+2

你认为'nextDouble'有什么用途?自从什么时候是姓氏数字? – 2015-04-05 00:29:21

+0

当你在调试器中遍历代码时,你看到了什么? – 2015-04-05 01:07:08

回答

0

您试图将字符解析为双精度,这就是为什么它抛出异常。

声明你的名字&姓氏为字符串,并通过使用

Input.nextLine() 

而不是

Input.nextDouble() 
0

你存储文本到你的名字和姓氏的变量从输入得到它们?这是明显的数据类型不匹配。使用字符串,它们是存储文本的东西。

String firstname; 
// Stuff 
firstname = input.nextLine(); 

双数是用于某一长度的浮点数。另外,尽可能使用int。

final int UNITS1 = 1000; 
final int UNITS2 = 3000; 
final int UNITS3 = 6000; 
final int BONUS1 = 25; 
final int BONUS2 = 50; 
final int BONUS3 = 100; 
final int BONUS4 = 200; 
// Stuff 
int bonusAmount; 

处理您的原始数据类型知识。希望这可以帮助!

相关问题