2014-10-23 2 views
0

У меня есть два printf, они являются отдельными, потому что каждый делает цикл. У меня проблемы с выравниванием одного из printf. Я хочу, чтобы он подружился под друзьями.Как выровнять с помощью printf

Что печатает

Member      Friends    
Chi Cho     Joe Blow 
       Jimmy Brown 
Status: 

Joe Blow     John Ko 
Status: Coding like a friend 

Tammy Joe     Joe Johnson 
Status: this is great 

Bing Smith     John Brown 
Status: This sucks 

, что я пытаюсь получить

Member      Friends    
Chi Cho     Joe Blow 
          Jimmy Brown 
Status: 

Joe Blow     John Ko 
Status: Coding like a friend 

Tammy Joe     Joe Johnson 
Status: this is great 

Bing Smith     John Brown 
Status: This sucks 

for (int i = 0 ; i< profiles; i++) 
    { 
    String arrayName = face.get(i).getName();  
    String statusName = face.get(i).getStatus(); 

    LinkedList<String> linkName = face.get(i).getFriend(); 
    String realname =""; 
    System.out.printf("%-5.20s" ,arrayName); 
    for(String toname : linkName) 
    System.out.printf("     %-5.20s%n" ,toname);  
    System.out.println("Status: " + statusName); 
    System.out.println(); 
    } 
+0

Что произойдет, если вы удалите пробелы со второго printf? Если ничего предпочтительного, можете ли вы привести пример, который компилируется и запускается сам по себе? –

+0

Он просто печатает рядом с другим заявлением печати –

+0

, и если вы измените for-loop на: 'for (String toname: linkName) {System.out.printf ("% - 5.20s "," "); System.out.printf ("% - 5.20s% n", toname); } '? –

ответ

0

Я получил это работает со следующим кодом (я изменил LINKNAME переменной в массив строк и класс лицом к ArrayList из этих массивов строк, чтобы он работал на моем компьютере):

public static void main(String[] args) { 
    ArrayList<String[]> profiles = new ArrayList<>(); 
    profiles.add(new String[] { "John", "Elisabeth", "John Snow" }); 
    profiles.add(new String[] { "John Snow", "Elisabeth W.", "George Palin" }); 
    profiles.add(new String[] { "John Eduard", "Annabelle", "Mike" }); 

    for (int i = 0 ; i < profiles.length; i++) { 
     String arrayName = "Name";  
     String statusName = "Married"; 

     String[] linkName = profiles.get(i); 
     String realname = ""; 

     System.out.printf("%-20s", arrayName); 

     for (String toname : linkName) { 
      System.out.printf("%-20s", toname); 
      System.out.println(); 

      // If the current toname isn't the last element in the linkName array. 
      if (toname != linkName[linkName.length - 1]) { 
       System.out.printf("%-20s", ""); 
      } 
     } 

     System.out.println("Status: " + statusName); 
     System.out.println(); 
    } 
} 

выход:

Name    John 
        Elisabeth 
        John Snow 
Status: Married 

Name    John Snow 
        Elisabeth W. 
        George Palin 
Status: Married 

Name    John Eduard 
        Annabelle 
        Mike 
Status: Married 

EDIT: Вот фактическая поправка к коду:

for (int i = 0 ; i < profiles; i++) { 
    String arrayName = face.get(i).getName();  
    String statusName = face.get(i).getStatus(); 

    LinkedList<String> linkName = face.get(i).getFriend(); 
    String realname = ""; 
    System.out.printf("%-20s", arrayName); 

    for (String toname : linkName) { 
     System.out.printf("%-20s", toname); 
     System.out.println(); 

     if (toname != linkName.get(linkName.length - 1)) { 
      System.out.printf("%-20s", ""); 
     } 
    } 

    System.out.println("Status: " + statusName); 
    System.out.println(); 
} 
+0

Спасибо, но мне нужен оператор if not, как если бы это был связанный список, а не массив. Знаете ли вы, как это сделать? –

+0

Конечно, вам просто нужно изменить правильные переменные с теми, которые вы хотите. Хорошо, я отредактирую код, который должен сработать для вас. –

0

попробовать использовать System.out.println() с таким количеством вкладок (8 пробелов) пространства вы хотите, как
System.out.println("Member" "friends") Вы можете добавить свои анкеты между ними, если хотите, с помощью оператора +

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