2015-07-21 7 views
0

Проект, над которым я работаю, требует, чтобы баланс банковского счета печатался с использованием метода toString. Мне не разрешено добавлять какие-либо методы в мою текущую программу, но мне нужно отформатировать мою переменную myBalance в двойную, которая переходит на два десятичных знака вместо одного. В этом конкретном случае моя программа должна печатать 8.03, но она печатает 8.0.Форматирование Java - toString (форматирование парного разряда)

Вот мой метод ToString:

public String toString() 
    { 
     return"SavingsAccount[owner: " + myName + 
     ", balance: " + myBalance + 
     ", interest rate: " + myInterestRate + 
     ",\n number of withdrawals this month: " + myMonthlyWithdrawCount + 
     ", service charges for this month: " + 
     myMonthlyServiceCharges + ", myStatusIsActive: " + 
     myStatusIsActive + "]"; 
    } 

Я новичок в Java до сих пор, так что я хотел бы знать, если есть способ реализации% .2f в строку где-то форматировать только переменная myBalance. Спасибо!

ответ

1

Использование String.format(...) для этого:

@Override 
public String toString() { 
    return "SavingsAccount[owner: " + myName + 
    ", balance: " + String.format("%.2f", myBalance) + 
    ", interest rate: " + String.format("%.2f", myInterestRate) + 
    ",\n number of withdrawals this month: " + myMonthlyWithdrawCount + 
    ", service charges for this month: " + 
    myMonthlyServiceCharges + ", myStatusIsActive: " + 
    myStatusIsActive + "]"; 
} 

или более лаконично:

@Override 
public String toString() { 
    String result = String.format("[owner: %s, balance: %.2f, interest rate: %.2f%n" + 
     "number of withdrawals this month: %d, service charges for this month: %.2f, " + 
     "myStatusIsActive: %s]", 
     myName, myBalance, myInterestRate, myMonthlyWithdrawCount, 
     myMonthlyServiceCharges, myStatusIsActive); 
    return result; 
} 

Обратите внимание, что khelwood спросил о моем использовании "%n" для новой строки маркеров, а не обычный "\n" String. Я использую %n, потому что это позволит java.util.Formatter получить конкретную платформу для новой строки, полезную, в частности, если я хочу написать String в файл. Обратите внимание, что String.format(...), а также System.out.printf(...) и аналогичные методы используют java.util.Formatter в фоновом режиме, так что это относится и к ним.

+0

я вижу! Я не знал, что ты можешь так писать. Большое спасибо, сэр/мадам. Кроме того, я люблю тебя, имя пользователя. – Trafton

+0

@Trafton: см. Обновление –

+0

Вы имеете в виду '\ n', где у вас'% n'? – khelwood

0

Использование string.Format()

Пример:

Double value = 8.030989; 
System.out.println(String.format("%.2f", value)); 

Выход: 8,03

+0

Возможный дубликат [link] (http://stackoverflow.com/questions/4885254/string-format-to-format-double-in-java) – digidude