2015-04-05 79 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; 

處理您的原始數據類型知識。希望這可以幫助!

相關問題