1

ローンの利息を計算し、特定の小数点以下の桁数で情報を表示するプログラムをコーディングしようとするとエラーが発生します。ローンインタレストを3.546%、または小数点以下3桁で表示する必要があります。を正しく表示することができましたが、totalInterestこれは私が確立したばかりの新しい値であるためかどうかはわかりません。以下に示すようにプログラムを実行しようとすると、「floatは逆参照できません」というエラーが発生します。

public class SarahShelmidineModule2Project {

public static void main(String[] args) {
    //Being programing for Module 2 project

    // Welcome the user to the program
    System.out.println("Welcome to the Interest Calculator");
    System.out.println();  // print a blank line

    // create a Scanner object named sc
    Scanner sc = new Scanner(System.in);

    // perform interest calculations until choice isn't equal to "y" or "Y"
    String choice = "y";
    while (choice.equalsIgnoreCase("y"))
    {
        // get info from user on loan amount and interest rates and store data
        System.out.print("Enter loan amount:   ");
        double loanAmount = sc.nextDouble();
        System.out.print("Enter interest rate:   ");
        float loanInterest = sc.nextFloat();


        // calculate the interest and convert to BigDecimal and rounding for totalInterest

       BigDecimal decimalloanAmount = new BigDecimal (Double.toString(loanAmount));
       BigDecimal decimalloanInterest = new BigDecimal (Double.toString(loanInterest));
       BigDecimal totalInterest = decimalloanAmount.multiply(decimalloanInterest);
       totalInterest = totalInterest.setScale(2, RoundingMode.HALF_UP);

       loanInterest = loanInterest.setScale(3, RoundingMode.HALF_UP);

        System.out.println();  // print a blank line

        // display the loan amount, loan interest rate, and interest
        // also format results to percent and currency
        NumberFormat currency = NumberFormat.getCurrencyInstance();
        NumberFormat percent = NumberFormat.getPercentInstance();

        String message =    "Loan amount: " + currency.format(loanAmount) + "\n"
                +           "Interest rate:  " + percent.format(loanInterest) + "\n"
                +           "Intrest:    " + currency.format(totalInterest) + "\n";
        System.out.println(message);

        // inquire if user would like to continue with application
        System.out.print("Continue? (y/n): ");
        choice = sc.next();
        System.out.println();

これを実行すると、次のエラーが発生します。

利息計算機へようこそ

ローン金額を入力してください:10932

金利を入力してください:.0934

Exception in thread "main" java.lang.RuntimeException: Uncompilable
source code - Erroneous sym type: <any>     at
 sarahshelmidinemodule2project.SarahShelmidineModule2Project.main(SarahShelmidineModule2Project.java:45)
4

1 に答える 1

1

変えるだけ

float loanInterest = sc.nextFloat();

BigDecimal loanInterest = new BigDecimal(sc.nextFloat());

float はプリミティブ型であり、 method を持たないため、「float を逆参照できません」を解決しますsetScale

正しい小数点以下の桁数を表示するには、次のようにします。

    String currencySymbol = Currency.getInstance(Locale.getDefault()).getSymbol();
    System.out.printf("%s%8.5f\n", currencySymbol, totalInterest);

このコードは 5 つの小数を使用しますが、BigDecimal の位取りが少なくとも 5 であることを確認してください。

于 2013-01-20T00:05:43.980 に答える