#java #formatting #overriding #tostring
Вопрос:
Я знаю, что могу просто использовать printf для форматирования, но printf используется для печати. Я хочу использовать форматирование для хранения данных, а затем вызвать данные для их печати вне цикла выполнения.
@Override
public String toString() {
Scanner input = new Scanner(System.in);
String enter = "", data = "";
double totalCommission = 0.0;
DecimalFormat df = new DecimalFormat();
do {
setTransaction();
setSalesNum();
setName();
setAmount();
setCommission();
setRate();
do {
//prompt user to enter another
System.out.println("Would you like to enter another? [Y/N]");
boolean error = false;
//error prompt if y or n is not entered
enter = input.next();
if (!(enter.equals("n") || enter.equals("N") || enter.equals("y") || enter.equals("Y"))) {
error = true;
System.out.println("Invalid input! Please enter again.n Would you like to enter another student's mark? [Y/N]");
} else {
error = false;
}
} while (false);
//setting the decimal places
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(2);
//transaction details saved here
data = getTransaction() "t" getSalesNum() "tt" getName() "tt" (df.format(getAmount())) "t" " " getRate() "%" "tt" (df.format(getCompute())) "n";
totalCommission = totalCommission getCompute();
} while (enter.equalsIgnoreCase("Y"));
System.out.println("SalestCommission");
System.out.println("TNO#tSALESNO#tNAMEttAMOUNTtt" " " "COMM RATEtCOMMISSION");
return String.format(data "tttttt" " " "TOTAL COMMISSIONt" (df.format(totalCommission)));
}
Итак, что я хотел сделать data = getTransaction() "t" getSalesNum() "tt" getName() "tt" (df.format(getAmount())) "t" " " getRate() "%" "tt" (df.format(getCompute())) "n";
, так это отформатировать эту часть внутри while (enter.equalsIgnoreCase("Y"));
, а затем отправить data
сюда: return String.format(data "tttttt" " " "TOTAL COMMISSIONt" (df.format(totalCommission)));
Комментарии:
1. Смысл
String.format
в том, чтобы использовать%s
(и т. Д.) Заполнители, такие же, как и выprintf
. Если вы знаете , какprintf
это сделать, сделайте это сString.format
помощью .
Ответ №1:
Мне жаль, но я не понимаю, чего вы хотите достичь. Вы можете добавить пример ввода и желаемого вывода.
Прежде всего:
if (!(enter.equals("n") || enter.equals("N") || enter.equals("y") || enter.equals("Y"))) {
if (!(enter.equalsIgnoreCase("n")|| enter.equalsIgnoreCase("y"))) {
Вы говорили о печати, поэтому, возможно, захотите взглянуть на: https://www.javatpoint.com/java-string-format
Поскольку вы уже упомянули String.format, я, наверное, неправильно понял ваш вопрос. Если вы ответите мне, я постараюсь вам помочь.
Вы написали, что хотите сохранить свои данные внутри этого цикла while и вернуть их позже. В этом случае я бы добавил все данные в список и вернул этот список.