DecimalFormat ("$ 0.00") добавляя нули и не помещая десятичную дробь туда, куда она должна идти - PullRequest
0 голосов
/ 01 октября 2018

Для класса я должен ввести количество четвертей, центов и никелей и вывести их в долларах.

Если я введу 4 четверти, 10 центов и 5 никелейЯ получаю $225.00, а не $2.25.

Кто-нибудь может мне помочь, пожалуйста?

public static void main(String[] args) {

    System.out.print("Enter Number of Quaters: ");
    Scanner quarter = new Scanner (System.in);
    int quarters = quarter.nextInt();

    System.out.print("Enter Number of Dimes: ");
    Scanner dime = new Scanner (System.in);
    int dimes = dime.nextInt();

    System.out.print("Enter Number of Nickels: ");
    Scanner nickel = new Scanner (System.in);
    int nickels = nickel.nextInt();

    DecimalFormat df = new DecimalFormat("$0.00");
    System.out.print("The total is ");
    System.out.println(df.format((quarters * 25) + (dimes * 10) + (nickels * 5)));
}

1 Ответ

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

Я знаю, что следующий код довольно хакерский, но если вам не нужно использовать DecimalFormat, тогда это должно отформатировать значение int, представляющее центы в долларах, правильно:

int total = (quarters * 25) + (dimes * 10) + (nickels * 5);
String strTotal = (total<10 ? "0" + String.valueOf(total) : String.valueOf(total));
String formattedTotal = "$" + (strTotal.length()<3 ? "0" : strTotal.substring(0, strTotal.length()-2))
                            + "." + strTotal.substring(strTotal.length()-2, strTotal.length());

System.out.println(formattedTotal);
...