2012-02-20 40 views
-4
import java.util.Scanner; 
class Calculator 
{ 


    public static void main(String args[]){ 
     Scanner mortgage = new Scanner(System.in); 
     System.out.println(mortgage.nextLine()); 
     double iRate; 
     double lAmount; 
     double answer; 
     System.out.println("Enter interest rate"); 
     iRate = mortgage.nextDouble(); 
     System.out.println("Enter loan amount"); 
     lAmount = mortgage.nextDouble(); 
     answer = iRate + lAmount; 
     System.out.println(answer); 
    } 

} 

我的問題是我不認爲我正確地聲明瞭雙精度,並且出現錯誤。如何正確申報的雙重所以程序沒有錯誤在Java中聲明雙精度

+5

當您詢問有關錯誤時,包含錯誤的詳細信息會很有幫助。 – jdigital 2012-02-20 02:39:46

+0

如果您遇到錯誤,那麼在您的問題中向我們顯示錯誤是明智的,對嗎? – 2012-02-20 02:39:51

+3

我沒有編譯時或運行時錯誤。 – RanRag 2012-02-20 02:41:17

回答

5

運行該代碼編譯雖然罰款:

System.out.println(mortgage.nextLine()); 

似乎有點奇怪,因爲你等待線,然後打印出來。不知道爲什麼你會想這樣做。

與該行刪除,有些化妝品的變化下面的代碼:

import java.util.Scanner; 
class Test { 
    public static void main (String args[]) { 
     Scanner mortgage = new Scanner (System.in); 
     double iRate, lAmount, answer; 

     System.out.println ("Enter interest rate"); 
     iRate = mortgage.nextDouble(); 

     System.out.println ("Enter loan amount"); 
     lAmount = mortgage.nextDouble(); 

     answer = iRate + lAmount; 
     System.out.println ("Answer is " + answer); 
    } 
} 

輸出:

Enter interest rate 
10 
Enter loan amount 
50000 
Answer is 50010.0 

您可能還需要重新思考你做的利率計算方式。任何曾經爲銀行工作過的人都會得到一個傻笑。

來計算,由於一些資金的一定百分比計算的利息是比較通用的做法是這樣的:

answer = iRate/100.0 * lAmount; 

雖然我知道你可能打算清理一下一旦你過去立即解決問題,所以對那個友好的刺拳道歉:-)

1

我不得不猜測,因爲你沒有指定錯誤,但它可能來自於你的使用mortgage.nextDouble();nextDouble();將只讀出您輸入的行中的下一個雙精度,意味着末尾會有一個尾隨的換行符,這將導致它以您不期望的方式工作。

有幾個可選的方式去了解它,所以我就表現出一個位置:

double iRate; 
iRate = Double.parseDouble(mortgage.nextLine()); 

你要知道,這樣做盡可能多的健全檢查作爲你的代碼(如,沒有!)。它的功能是在一行輸入中讀取,然後讓Double類將結果String轉換爲存儲在double iRate中的Double

1

如果您希望您的「輸入利率」行首先出現,請刪除System.out.println(mortgage.nextLine());;它沒有做任何事情。你的程序在進行之前等待輸入,我認爲這是你的問題。

0

請勿使用double(或float)的錢或任何其他計算,看看這篇文章「don't use floats for money」。基本上它IEEE 754給你所有的舍入錯誤。