如何使用String.format显示带前导空格的值?

时间:2016-11-15 10:24:08

标签: java

我试图按升序从1开始计算一个数字,我需要为每一行添加前导空格,诀窍是第一行没有空格,第二行没有空格,第二行有2个空格第(n + 1)个数字的第三行和n个空格。

例如,如果用户输入值4,则应在中预期输出<{strong>:enter image description here

我做了一些研究,我无法弄明白。我认为它与String.format方法有关。有任何想法吗?非常感谢您的努力!

public static boolean objectIsEmpty(Object object) {
    for (Class<?> c = object.getClass(); c != null; c = c.getSuperclass()) {
        Field[] fields = c.getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            try {
                if (field.get(object) != null) {
                    if (field.getType().equals(List.class)) {
                        // System.err.println("len " +
                        // Array.getLength(field.get(object)));
                    }
                    if (Collection.class.isAssignableFrom(field.getType())) {
                        System.err.println(Collection.class.cast(field).size());
                        // ClassCastException thrown here
                    }
                }
            } catch (IllegalAccessException e) {
                // Should not occur with setAccessible(true), return false just
                // in case
                e.printStackTrace();
                return false;
            }
        }
    }
    return true;

3 个答案:

答案 0 :(得分:3)

 public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
      int c = 0 ;
    int num = input.nextInt();
    input.close();
    while (c < num)
    {
        c++;
   System.out.println(String.format("%"+c+"s",c)); 
    }
}

而不是3使用c

答案 1 :(得分:2)

这是一个简单的循环,向您展示它是如何工作的:

for(int i = 1; i < 10; ++i){
    System.out.format("%"+i+"s\n", String.valueOf((char)(i+'a'-1)));
}

基本上,这将创建格式%#s,您可以在其中更新#到您想要的数字。

我使用了System.out.format,但您也可以使用String.format

/!\此标志的最小值为1

输出

a
 b
  c
   d
    e
     f
      g
       h
        i

答案 2 :(得分:1)

一种解决方案可能是为StringBuilder为每个新数字添加一个空格。

StringBuilder spaces = new StringBuilder();
Scanner sc = new Scanner(System.in);
int userChoice = 0;
while(userChoice != -1){
    userChoice = sc.nextInt();
    System.out.print(spaces.toString());
    System.out.print(userChoice);
    System.out.println();
    spaces.append(" ");
}