2016-07-01 3 views
0

Что я хотел напечатать:Использование string.Format в Java

Coca-Cola  $ 11.00 
Pepsi   $ 9.45 
Sprite   $ 8.50 

Что в конечном итоге печать:

Coca-Cola  $ 11 
Pepsi  $ 9.45 
Sprite  $ 8.5 

Мой код:

public void test(){ 
    for (int i = 0; i<20; i++){ 
     System.out.print(product[i]); 
     System.out.println(String.format("%20s%n", "$ "+price[i]));; 

    } 

Ищу для этого в течение 2 часов, возможно, я не настолько хорош, чтобы указать условия поиска, но я постараюсь избежать еще нескольких часов поиска и страдания, просто спросив ... Извините за то, что вы не знаете достаточно, чтобы правильно найти это на форумах или указать мой заголовок и большое спасибо.

+0

Поиск "java string format right align". – shmosel

+0

Formatter: '% 20s $%. 2f" ', читать больше abt string [форматирование] (https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html) –

+0

Фактически я может выравнивать текст вправо, но выравнивает всю строку, и я не могу контролировать объем пространства между продуктом и ценой, сложная часть выравнивает продукт влево, а цена - вправо. –

ответ

0

Проблема вашего кода в том, что он сначала печатает продукт , затем пытается напечатать отформатированную строку.

Битва уже потеряна, когда она печатает эти вещи отдельно. Поскольку вторая печать должна знать длину продукта, чтобы определить, сколько пробелов ему нужно для выравнивания цен. Это число точно не будет одинаковым.

Попробуйте вместо этого:

System.out.printf("%-20s$ %5.2f\n", product[i], price[i]); 

Выход:

Coca-Cola   $ 11.00 
Pepsi    $ 9.45 
Sprite    $ 8.50 

%-20s покидающий оправдывает название продукта, заполнить необходимое количество пробелов после названия продукта.

Чтобы выровнять десятичную точку, нам нужно также указать общую длину форматированного числа. С %5.2 мы запрашиваем общую длину 5, которая 11.00 подходит хорошо, вы можете настроить это число, если цена превышает 99.

Удачи.

+0

Код теперь лучше, спасибо. Но есть ли способ выровнять все цены вправо? –

+0

Да, я вижу разницу ... –

+0

@BernardoAraujo Смотрите обновления. –

0

Синтаксис для string.Format общественного статического формата String (формат String, Object ... арг)

Параметры

форматом Это строка формата. args- Это аргумент, на который ссылаются спецификаторы формата в строке формата. Если аргументов формата больше аргументов, дополнительные аргументы игнорируются. Число аргументов является переменной и может быть нулевым.

Смежные вопросы