import java.text.*;
public class program17
{
public static void main(String[] args)
{
    NumberFormat money=NumberFormat.getCurrencyInstance();
    int[] num={2013,2015,2017,2019,2021};
    double[] price={19.85,15.39,16.59,12.35,15.15};
    int[] qty={43,12,34,17,10};
    double[] value={0,0,0,0,0};
    System.out.println("Part  \tItem \tItem    \tTotal");
    System.out.println("Number\tPrice\tQuantity\tValue\n");
    for(int i=0;i<5;i++)
    {
        value[i]=val(price[i],qty[i]);
        //System.out.println(num[i]+"\t"+money.format(price[i])+"\t"+qty[i]+"\t"+money.format(value[i]));
        System.out.format("%4d\t $%5d.2f\t %2d\t %6.2f", num[i], price[i], qty[i], value[i]);
    }
}
public static double val(double p, int q)
{
    double x=p*q;
    return x;
}
}

Вот 100% моего кода. Вот результат моего решения: Захваченный вывод http://maradastudios.ucoz.com/school/Capture2.png

Как вы можете догадаться, я мог бы просто отобразить «строки данных» этой программы с помощью оператора System.out.println (), однако мне уже потребовался System.out.format () в этом конкретном типе. ситуации, поэтому я решил, что будет лучше узнать, что означает эта ошибка. Я ДУМАЮ, это может быть потому, что моя переменная цена [i], которую я пытаюсь отобразить, является двойной, а не int, как num [i]. Я пришел к такому выводу, потому что сначала я запускал его с

System.out.format("%4d\t", num[i);

После этого все работало нормально, я запустил его с

System.out.format("%4d\t $%5d.2f\t", num[i], price[i);

И после этого возникла ошибка. Это полный код, который я пытаюсь запустить. Может ли кто-нибудь сказать мне, в чем проблема с моим оператором System.out.format (), и помочь мне исправить это?

1
Brandon Durst 5 Апр 2013 в 21:24

1 ответ

Лучший ответ

У вас есть случайный d в строке формата. Удалите его, и все будет хорошо.

System.out.format("%4d\t $%5d.2f\t %2d\t %6.2f", num[i], price[i], qty[i], value[i]);
                            ^
1
John Kugelman 5 Апр 2013 в 21:25
Ого, не могу поверить, что я это пропустил! Я возился с моими типами переменных, так как в ошибке говорилось, что Java.lang.Double. Хотя на самом деле я только что узнал об операторе System.out.format () из моего более раннего (и самого первого) опубликованного вопроса около 20 минут назад! Спасибо за помощь!
 – 
Brandon Durst
5 Апр 2013 в 21:28