2012-02-08 10 views
1

私はBigDecimalクラスを使って学校向けのプログラムを作成しようとしています。プログラムは、金利計算機ですと、最終的な出力がsomethigのようにする必要があります:BigDecimalクラスJava

Loan Amount: whatever loan amount is in dollars 
    Interest Rate: as a percent 
    Interest: amount of interest paid in dollars 
    continue? Y/N: 

本はBigDecimalクラスをコーディングする方法については明らかではないと私はので、私は変更を加える任意の時間をEclipseを使用しています私は混乱しているエラーを取得します。 誰かがこれを見て、私を正しい方向に向けることができますか?私はMurachのJava SE6を使用していますが、この本はあまり役に立ちません。

ありがとうございました!

import java.util.Scanner;   //import scanner 
    import java.text.NumberFormat;  //import number format 
    import java.math.*;     //import math classes 


    public class InterestCalculator  //create public class 
    { 

     public static void main(String[] args) 
      { 
      Scanner calc = new Scanner(System.in); //create scanner 
      double LoanAmount, InterestRate, Interest; //declareLoanAmount,InterestRate, and Interest as double 

      //welcome user to the Interest Rate Calculator 
      System.out.println("Welcome to The Interest Rate Calculator"); 
      System.out.println(); 
      //perform choice calculations until choice isn't equal to "y" or "Y" 
      String choice = "y";  
      while (choice.equalsIgnoreCase("y")) 
       { 

       //Get Loan Amount from user 
       System.out.println("Enter Loan Amount: "); 
       LoanAmount = calc.nextDouble(); 

       //Get Interest rate from user 
       System.out.println("Enter Interest Rate: "); 
       InterestRate = calc.nextDouble(); 

       BigDecimal decimalInterest = new BigDecimal(Double.toString(Interest)); 
       decimalInterest = decimalInterest.setScale(2, RoundingMode.HALF_UP); 
       BigDecimal decimalInterestRate = new BigDecimal(Double.toString(InterestRate)); 
       decimalInterestRate = decimalInterestRate.setScale(2, RoundingMode.HALF_UP); 

       //calculate interest 



       System.out.println("message"); 


       //prompt user to continue? 
       System.out.println("Continue? Y/N: "); 
       choice = calc.next(); 
       System.out.println(); 



       } 


     } 

    } 
+0

私はまたInterest = LoanAmount * InterestRateのようなものでなければならない計算をコーディングすることに問題があります。そして私は下の方のプリントが単に "Message"という単語を印刷することを知っています。私の以前の試みでは、私は出力全体を印刷する文字列を書こうとしていましたが、私は文字列メッセージに題名を付けました。 –

+3

どのようなエラーが表示されますか? – Kris

+0

[BigDecimal javadoc](http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html)をご覧になることをお勧めします。かなり包括的です。一般に、 'BigDecimal'は不変であるため、操作を実行するたびに新しいインスタンスを取得します。 'BigDecimal someValue = decimalInterest.multiply(decimalInterestRate);'それ以外は、 'Double.toString(Interest)'のような文字列変換は不要です。 'BigDecimal' ctorはdoubleを受け取ります。 javadoc!) –

答えて

2

あなたの問題は、この時点

BigDecimal decimalInterest = new BigDecimal(Double.toString(Interest)); 

に関連している変数利息は、この時点でinitalizedされていません。 (しかし、私はあなたのコーディングスタイルを改善しなかった)仕事をしなければならない。このような

何か:

 BigDecimal decimalInterestRate = new BigDecimal(Double.toString(InterestRate)); 
     decimalInterestRate = decimalInterestRate.setScale(2, RoundingMode.HALF_UP); 
     BigDecimal decimalLoanAmount = new BigDecimal(Double.toString(LoanAmount)); 
     decimalLoanAmount = decimalLoanAmount.setScale(2, RoundingMode.HALF_UP); 

     // calculate interest 
     BigDecimal Interest = decimalInterestRate.multiply(decimalLoanAmount); 

     System.out.println("Interest:" + Interest); 

P.S.メインメソッドの冒頭でInterest宣言を削除する必要があります。

+0

私は私の無知を認めています。私はそれを初期化するために何をする必要があるかを詳しく説明できますか? –

+0

@JeremyBorton私は例を追加しました。 – fyr

+0

ありがとうございました! NumberFormatを使用して出力の残りの部分を正しくコーディングできるはずです。 –