Форматирование строки в Java, чтобы соответствовать идеально

1

Поэтому мне было интересно, может ли кто-нибудь помочь мне с форматированием этого...

Вот что выглядит в настоящее время: Изображение 174551

Это то, что мне нужно, чтобы оно выглядело (без...): Изображение 174551

И вот мой код для этого в настоящее время:

    System.out.format( "%n$------------------------------------$");
    System.out.format( "%nWITHHOLDING FOR EACH EMPLOYEE%n%n" );
    System.out.format( "First Name        Last Name        Hourly Rate        Weekly Pay        Withholding Amount%n%n" );
    for( int i = 0; i < employeeNum; i++ ) {
        System.out.format( "%-10s %-10s %-10.3f %-10.3f %-10.3f%n", employeeFirstName[i], employeeLastName[i], 
                employeeHourlyPay[i], weeklyPay[i], withholdingAmt[i] );
    }
    System.out.format( "%nEND OF REPORT%n" );
    System.out.format( "$------------------------------------$");

Спасибо вам за помощь!

  • 0
    Почему бы вам не увеличить «10» в «% -10», пока он не выровняется ??? И пропустите .3, где вы не хотите десятичных дробей?
  • 0
    Вы должны посмотреть на библиотеки, которые могут сделать это для вас. Один из них здесь: code.google.com/p/data-exporter
Показать ещё 1 комментарий
Теги:
string
formatting

2 ответа

1

Здесь я это сделал, просто используйте выравнивание в заголовке:

System.out.print( "%n$------------------------------------$");
System.out.printf( "%nWITHHOLDING FOR EACH EMPLOYEE%n%n" );
System.out.printf("%-12s  %-12s  %-12s  %-12s  %-12s \n\n", "First Name", "Last Name", "Hourly Rate", "Weekly Pay", "Withholding Amount");

for( int i = 0; i < employeeNum; i++ ) {
    System.out.printf( "%-12s  %-12s  %-12.3f  %-12.3f  %-12.3f \n", employeeFirstName[i], employeeLastName[i], 
            employeeHourlyPay[i], weeklyPay[i], withholdingAmt[i] );
}
System.out.printf( "%nEND OF REPORT%n" );
System.out.print( "$------------------------------------$");

Вот результат:

...
First Name    Last Name     Hourly Rate   Weekly Pay    Withholding Amount 

Brett         Lawless       25.500        1020.000      204.000      
....
0

Используя это, чтобы усечь длинные строки:

static String truncto( String s, int max ){
    return s.length() > max ? s.substring(0,max) : s;
}

вы можете использовать это для получения выровненного вывода

System.out.format( "First Name        Last Name        Hourly Rate        Weekly Pay        Withholding Amount%n%n" );
System.out.format( "%-17s %-16s %-18.3f %-17.0f %-17.0f%n", 
           truncto("John-Bulwer-Lytton",17),
           truncto("Smith",16),
           123.45, 200.0, 100.0 );

Используйте элементы массива вместо литералов, которые я использовал для тестирования.

Вы можете наверняка напечатать две строки для заголовка.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню