0

java.text.NumberFormat を正しくインポートしたことがわかっているのに、シンボル「getCurrencyInstance()」が見つからないことがコンソールに表示される

いくつかのコードを削除したので、それほど雑然としませんでした。これは私のクラス全体ではありません。

import java.util.Scanner;
import java.text.NumberFormat;

public class Kohls
{

    // initialization
    static Prompter prompter;
    static Calculator calc;
    static Operator operator;

    private enum cardColor
    {
        RED, BLUE, GREEN;
    } // end of enum Color

    private static class Calculator
    {
        public int getDiscount(int age, cardColor color)
        {
            if (age > 62)
            // senior discount
                return 20;

            if (color == cardColor.RED)
            {
                return 30;
            }
            else if (color == cardColor.BLUE)
            {
                return 25;
            }
            else if (color == cardColor.GREEN)
            {
                return 15;
            }
            return 0;
        }

        public double getSalePrice(int discountPercentage, double price)
        {
            double salePrice = price - (price * (discountPercentage / 100));
            return salePrice;
        }
    } // end of class Calculator

    private class Operator
    {
        public void getPriceWithDiscount()
        {
            // prompts
            double price = prompter.getPrice();
            int age = prompter.getAge();
            cardColor color = prompter.getColor();

            // discount(s)
            int discountPercentage = calc.getDiscount(age, color);
            double salePrice = calc.getSalePrice(discountPercentage, price);

            NumberFormat fmt = new NumberFormat.getCurrencyInstance();
            String salePriceFormat = fmt.format(salePrice);

            operator.display(discountPercentage, salePriceFormat);
        }

        public void display(int discountPercentage, String salePrice)
        {
            System.out.print("You saved " + discountPercentage + "% on your purchase.");
            System.out.print("\nThe price of your purchase with discount is " + salePrice + ".");
        }
    } // end of class Operator

    public Kohls()
    {
        prompter = new Prompter();
        calc = new Calculator();
        operator = new Operator();
    } // end of constructor

    public static void main(String[] args)
    {
        Kohls kohls = new Kohls();
        kohls.operator.getPriceWithDiscount();
    } // end of method main()
} // end of class Kohls
4

5 に答える 5

4

これは構文的に正しくありません:

NumberFormat fmt = new NumberFormat.getCurrencyInstance();

のインスタンスを新規作成していませんNumberFormatNumberFormat.getCurrencyInstance()はメソッド呼び出しであるため、新しくすることはできません。

メソッドはすでにの静的インスタンスを返しているNumberFormatnewので、宣言からキーワードを削除してください。

NumberFormat fmt = NumberFormat.getCurrencyInstance();
于 2013-09-23T13:46:16.750 に答える
3

行の新しい演算子を削除します。これは静的メソッドであり、静的な場所でアクセスする必要があります。さらに、 NumberFormat は抽象クラスであり、インスタンス化することもできません。

NumberFormat nf = NumberFormat.getCurrencyInstance();
于 2013-09-23T13:48:47.573 に答える
1

しないでください

new NumberFormat.getCurrencyInstance();

メソッドのstatic場合。行う

NumberFormat.getCurrencyInstance();
于 2013-09-23T13:46:04.980 に答える
0

この行

NumberFormat fmt = new NumberFormat.getCurrencyInstance();

する必要があります

NumberFormat fmt = NumberFormat.getCurrencyInstance();

以来、getCurrencyInstance()静的に宣言されています。

お役に立てれば。

于 2013-09-23T13:47:39.113 に答える
0

newそのまま使ってgetCurrencyInstance()はいけないstatic

変化する

NumberFormat fmt = new NumberFormat.getCurrencyInstance();

NumberFormat fmt = NumberFormat.getCurrencyInstance();

于 2013-09-23T14:07:30.263 に答える