【问题标题】:Using printf with forEach in displayMethod, how to change spacing of individual arrays display在 displayMethod 中使用 printf 和 forEach,如何更改单个数组显示的间距
【发布时间】:2018-03-23 12:15:52
【问题描述】:

我正在为一门课练习泛型。我必须向终端打印有关三个不同数组的详细信息,然后运行选择排序并打印出排序后的数组及其最大值和最小值。

我的问题是,我的主要是,我怎样才能得到正确的间距,如附图所示?

这是我的输出的样子

我需要插入和删除空格来匹配这个输出,

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

如何单独更改它们?

您将在下面找到运行这一切的 Main 方法的 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 

【问题讨论】:

  • 本练习需要使用 printf 方法吗?

标签: java generics foreach printf


【解决方案1】:

您可以在 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();
}

【讨论】:

    猜你喜欢
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多