используя импорт NumberFormat в System.out.format - PullRequest
0 голосов
/ 21 октября 2018

Я делаю программу по сложным процентам для школьного задания.Я попытался с помощью System.out.format ();и использовал money.format для форматирования переменных вложений, процентов и вкладов.Я не знаю почему, но он продолжает выдавать мне сообщение об ошибке «Недопустимый тип значения« Строка »для спецификатора формата«% .2f », параметр 2, 3 и 4». Я пытался выяснить это довольнонекоторое время, и я до сих пор не могу понять, почему это так.

- A

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // SPLASH 
    // CONSTANT 
    // OBJECT 
    Scanner input = new Scanner(System.in); 
    NumberFormat money = NumberFormat.getCurrencyInstance();

    // VARIABLES
    double investment; 
    double investTotal; 
    double rate; 
    double intrest; 
    int year; 

    // INPUT 
    do 
    {
        System.out.print("Enter yearly investment (min $100.00 deposit): ");
        investment = input.nextDouble(); 
    } 
    while (investment < 100); 

    do 
    {
        System.out.print("Enter intrest rate (%): ");
        rate = input.nextDouble()/100;
    } 
    while (rate <= 0); 

    do
    {
        System.out.print("Enter number of years: ");
        year = input.nextInt(); 
    }
    while (year <= 0 || year > 15);  

    // PROCESSING 
    investTotal = investment;
    for (int perYear = 1; perYear <= year; perYear++)
    {
        intrest = investTotal*rate;
        investTotal = (investment+intrest);
        System.out.format("%2s | %.2f | %.2f | %.2f\n", perYear, money.format(investment), money.format(intrest), money.format(investTotal));
        investTotal = investTotal + investment;
    }
    // OUTPUT 
}

}

1 Ответ

0 голосов
/ 21 октября 2018

getCurrencyInstance возвращает строку и поэтому не может быть отформатирован с использованием% .2f.

Вы лучше посмотрите, как работает NumberFormat: https://docs.oracle.com/javase/7/docs/api/java/text/NumberFormat.html

Как видите, результатформатирование - это строка, когда вы используете String.format с% .2f, вы должны ввести число, например: System.out.format ("% 2s |% .2f \ n", 1.001, 1.005);

Я не уверен, что вы пытаетесь получить с помощью NumberFormat, если вы классифицируете, я смогу помочь вам в этом вопросе.

...