#java #string-formatting #string.format
Вопрос:
Я пытаюсь воссоздать прямые столбцы, которые выглядят аналогично этому, используя string.format:
14 Nigel Nachtricht Software Engineer 93 30 9 Inga Issacs Telemarketing Rep 54 32 20 Tenille Tucker Account Renewals Rep 74 32 35 Franklin Fraser Corporate Controller 91 32 39 Jonathan Jacobs VP Finance 59 32 8 Henry Henderson Field Marketing Manager 81 33 13 Marjory MacDonald Software Engineer 94 33
Это мой код, который у меня есть до сих пор, но я немного застрял, потому что он получает правильные только первые элементы, а пара целых чисел в конце не выстраивается в линию. Это неэффективно и немного случайно — формат string.все еще довольно нов для меня.
for(int i = 1; i lt; strLastName.length; i ) { String strIdFormat = String.format("%1$-5s", intId[i]); String strLastNameFormat = String.format("%1$-5s", strLastName[i]); String strFirstNameFormat = String.format("%1$-15s", strFirstName[i]); String strRoleFormat = String.format("%1$-15s", strRole[i]); String strAgeFormat = String.format("%1$20d", intAge[i]); String strGradeFormat = String.format("%1$10d", intGrade[i]); String[] nEw = {strIdFormat, strFirstNameFormat, strLastNameFormat, strRoleFormat, strAgeFormat, strGradeFormat}; for(int j = 0; j lt; nEw.length; j ) { System.out.print(nEw[j]); if(nEw[j] == nEw[5]) { System.out.println("n"); } } }
Вот что печатает мой код:
28 Anna AbernathyVP Sales - EMEA 58 74 27 Avery AndersonJr. Account Rep 60 73 1 Abigail ArmstrongCEO amp; Chairman 56 71 29 Brett BurkeDirector Sales - France 52 89 2 Benjamin BurtonExecutive Assistant 61 65 3 Charles ChapmanPresident amp; COO 40 71
Если бы кто-нибудь мог помочь, я был бы очень признателен!
Ответ №1:
Вы выделили 5 пробелов для фамилии. Все они длиннее этого, и String.format устраняет невозможность попросить его вставить строку длиной 20 в слот «%5s», просто выполнив обход. Либо напишите код, который удалит лишнее, если вы хотите с этим справиться ( x.substring(0, 5)
), либо сделайте его 5
в формате вашей фамилии намного больше.
Кроме того, ваше «если» для добавления новой строки должно быть просто if (i == 5)
, подумайте об этом.
Также немного странно, что вы отдельно отформатировали все это. Вы можете использовать только один строковый формат, и он вам не нужен 1$
. Возможно, прочтите документы и поиграйте с тем, что String.format
можно сделать.