2015-06-30 47 views
0

我寫一個程序返回的未來價值根據了一些輸入用戶給予java.util.Scanner中的錯誤

import java.util.Scanner; //import utility package, scanner class 
import java.lang.Math; //import language package, math class 
class InvestmentCalculation 

{ 
    public static void main(String[] args) 

    { 

     Scanner s = new Scanner(System.in); 

     //Principle Value Input 
     System.out.print("Enter principle deposit: "); 
     int p = s.nextInt(); 

     //Interest Rate Input 
     System.out.print("Enter annual interest rate: "); 
     int r = s.nextInt(); 

     double fv = p * Math.pow((1.0 + r/100), 10); 


     //operation print 
     System.out.println("Your investment will be worth: " + fv); 
    } 
} 

當我運行該程序後,我的速度鍵入它給了我下面的錯誤:

Exception in 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.nextInt(Scanner.java:2117) 
    at java.util.Scanner.nextInt(Scanner.java:2076) 
    at InvestmentCalculation.main(Addition.java:20) 
+0

你是如何運行的程序? –

+2

看來你已經按下輸入後第一次輸入? –

回答

2

這是因爲您可能輸入速率爲雙倍,因此輸入不正確。

注:在JavaDocsInputMismatchException內容如下:

Thrown by a Scanner to indicate that the token retrieved does not match the pattern for the expected type, or that the token is out of range for the expected type.

修正通過:

//Interest Rate Input 
System.out.print("Enter annual interest rate: "); 
double r = s.nextDouble(); 
+0

這是有道理的。謝謝你的幫助。我很感激。 –

+0

沒問題。只是爲了延長您的計劃的限制,您可能還想將主存款更改爲雙重類型。 – wkcamp