Ответ 1
Это Индекс аргументов. Вы можете прочитать документы. Я попытаюсь объяснить вам строку из учебника:
String fmt = "%1$4s %2$10s %3$10s%n";
// format
cnsl.printft(fmt, "Items", "Quanity", "Price");
cnsl.printft(fmt, "-----", "-----", "-----");
cnsl.printft(fmt, "Tomato", "1Kg", "15");
cnsl.printft(fmt, "Potato", "5Kg", "50");
cnsl.printft(fmt, "Onion", "2Kg", "30");
cnsl.printft(fmt, "Apple", "4Kg", "80");
В целом формат %[argument_index$][flags][width][.precision]conversion
.
В нашем примере #$
указывает на позицию внутри нашего оператора printft()
. У нас есть 3 строки для форматирования, и поэтому наша строка формата имеет 1$
, 2$
, 3$
. Число, которое следует за его шириной между каждым аргументом. Эта ширина начинается с 0, что означает, что фактическая ширина будет равна +1. s
- это наше преобразование в строку и новую строку %n
в конце.
Items Quantity Price
----- -------- -----
Tomato 1Kg 15
Potato 5Kg 50
Onion 2Kg 30
Apple 4Kg 80