在displayMethod中使用printf和forEach,如何更改单个数组的间距display

问题描述:

我正在为泛型类实践一个类。我必须向终端打印三个不同数组的详细信息,然后运行选择排序并打印出排序后的数组及其最大值和最小值。在displayMethod中使用printf和forEach,如何更改单个数组的间距display

我的问题是,我的主要原因是,如何获得正确的间距,如附图所示?

这里是我的输出看起来像

My output as is

我需要空间插入和移除此输出匹配, Output I need

我的主要问题,我想,是我需要改变例如,我的Integer和Char数组的间距似乎没问题,但是,如果我更改了我的displayArray方法的printf,它显然会影响我的数组中的每一个数组。

如何单独更改它们?

下面你会发现我的Java代码为我的主要方法运行这一切。谢谢。

public class Main { 
    public static void main(String[] args) { 
     Integer[] intArray = {10, 1, 6, 4, 9, 5, 2, 8, 3, 7}; 
     Character[] charArray = {'a', 'd', 'g', 'c', 'j', 'f', 'e', 'h', 'i', 'b'}; 
     String[] stringArray = {"aa", "dd", "gg", "cc", "jj", "ff", "ee", "hh", "ii", "bb"}; 

     System.out.printf("%s%n","Original arrays:"); 
     System.out.printf("%20s","Integer array: "); 
     displayArray("Integer", intArray); 
     System.out.printf("%20s","Character array:"); 
     displayArray("Character", charArray); 
     System.out.printf("%20s","String array: "); 
     displayArray(String.format("%20s", "String"), stringArray); 

     Algorithms algo = new Algorithms(); 

     System.out.printf("%n%20s","Smallest int: " + algo.getSmallestElement(intArray)); 
     System.out.printf("%n%20s","Largest int: " + algo.getLargestElement(intArray)); 
     System.out.println(); 
     System.out.printf("%n%20s","Smallest char: " + algo.getSmallestElement(charArray)); 
     System.out.printf("%n%20s","Largest char: " + algo.getLargestElement(charArray)); 
     System.out.println(); 
     System.out.printf("%n%20s","Smallest string: " + algo.getSmallestElement(stringArray)); 
     System.out.printf("%n%20s","Largest string: " + algo.getLargestElement(stringArray)); 
     System.out.println(); 
     System.out.printf("%n%s","Sorted Arrays: "); 
     algo.sort(intArray); 
     System.out.printf("%n%20s","Integer array:"); 
     displayArray("Integer", intArray); 
     algo.sort(charArray); 
     System.out.printf("%20s","Character array:"); 
     displayArray("Character", charArray); 
     algo.sort(stringArray); 
     System.out.printf("%20s","String array:"); 
     displayArray("String", stringArray); 
     //displayArray(String.format("%20s", "Integer array:"), intArray); 
    }// end main mehtod 

    public static <E> void displayArray(String label, E[] list) { 
     for (E element : list) { 
      System.out.printf("%2s", element); 
     }// end forEach 
     System.out.println(); 
    }// end display method 

}// end main class 
+0

使用printf方法是否需要此练习? – paulk23

您可以在displayArray方法中检查e的类型,并相应地调整输出。

public static <E> void displayArray(String label, E[] list) { 
    for(E element : list) { 
     if(element instanceof String) 
      System.out.printf("%s", element); 
     else 
      System.out.printf("%s ", element); 
    } 
    System.out.println(); 
} 
+0

辉煌,工作像一个魅力,比你先生好。 –