Есть ли вообще способ отформатировать это? Код уже работает нормально, но форматирование будет выполняться, если значение слишком велико

#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 и вернуть их позже. В этом случае я бы добавил все данные в список и вернул этот список.