Java 如何右对齐Floyd';s三角幂为2

Java 如何右对齐Floyd';s三角幂为2,java,for-loop,Java,For Loop,如何在输出Floyd三角形的最后2行向左移动? 以下是我的输出: 1 21 421 8421 168421 32168421 预期产出: 1 21 421 8421 168421 32168421 这是我的密码: for(int i=0; i<=5; ++i) { //total of space int n=6

如何在输出Floyd三角形的最后2行向左移动? 以下是我的输出:

      1 
     21 
    421 
   8421 
  168421 
 32168421 
预期产出:

         1 
        21 
       421 
      8421 
    168421 
  32168421 
这是我的密码:

 for(int i=0; i<=5; ++i) {

         //total of space
        int n=6-i;

         //print space
         while(n>0) {
             System.out.print(" ");
             n--;
         }

         //print number
         for(int j=i; j>=0; j--) {
             System.out.print((int)Math.pow(2, j));
         }

         System.out.println(" ");

     }
for(int i=0;i0){
系统输出打印(“”);
n--;
}
//打印号码
对于(int j=i;j>=0;j--){
系统输出打印((int)数学功率(2,j));
}
System.out.println(“”);
}
谢谢

列表结果=新建ArrayList();
        List<String> result = new ArrayList<>();

        for(int i=0; i<=5; ++i) {
            StringBuilder sb = new StringBuilder();
            for(int j=i; j>=0; j--) {
                sb.append((int)Math.pow(2, j));
            }
            result.add(sb.toString());
        }

        // You need to find out the longgest string for the padding left calculation
        int length = result.get(result.size() - 1).length();

        result.forEach((str -> System.out.println(padLeft(str, length))));
对于(int i=0;i=0;j--){ sb.append((int)Math.pow(2,j)); } 添加(sb.toString()); } //您需要找出最长的字符串用于左填充计算 int length=result.get(result.size()-1.length(); forEach((str->System.out.println(padLeft(str,length)));
为填充添加一个直到方法:

public String padLeft(String inputString, int length) {
        if (inputString.length() >= length) {
            return inputString;
        }
        StringBuilder sb = new StringBuilder();
        while (sb.length() < length - inputString.length()) {
            sb.append(' ');
        }
        sb.append(inputString);

        return sb.toString();
    }
publicstringpadleft(stringinputstring,int-length){
if(inputString.length()>=length){
返回输入字符串;
}
StringBuilder sb=新的StringBuilder();
while(sb.length()
int lineLength=8;
对于(int i=0;i=0;j--){
sb.append((int)Math.pow(2,j));
}
//打印空间
对于(int spaces=lineLength-sb.length();空格>0;空格--){
系统输出打印(“”);
}
System.out.println(sb.toString());
}
还有一个更一般的例子:

public static void main(String[] args) {

    int numbersToCompute = 10;
    int lineLength = floydsNumber(numbersToCompute).length();
    for (int i = 0; i <= numbersToCompute; ++i) {
        String floydsNumber = floydsNumber(i);
        for (int spaces = lineLength - floydsNumber.length(); spaces > 0; spaces--) {
            System.out.print(" ");
        }
        System.out.println(floydsNumber.toString());
    }
}

private static String floydsNumber(int i) {
    StringBuilder sb = new StringBuilder();
    for (int j = i; j >= 0; j--) {
        sb.append((int) Math.pow(2, j));
    }
    return sb.toString();
}
publicstaticvoidmain(字符串[]args){
int numbersToCompute=10;
int lineLength=floydsNumber(numbersToCompute).length();
对于(int i=0;i 0;空格--){
系统输出打印(“”);
}
System.out.println(floydsNumber.toString());
}
}
私有静态字符串floydsNumber(int i){
StringBuilder sb=新的StringBuilder();
对于(int j=i;j>=0;j--){
sb.append((int)Math.pow(2,j));
}
使某人返回字符串();
}
public static void main(String[] args) {

    int numbersToCompute = 10;
    int lineLength = floydsNumber(numbersToCompute).length();
    for (int i = 0; i <= numbersToCompute; ++i) {
        String floydsNumber = floydsNumber(i);
        for (int spaces = lineLength - floydsNumber.length(); spaces > 0; spaces--) {
            System.out.print(" ");
        }
        System.out.println(floydsNumber.toString());
    }
}

private static String floydsNumber(int i) {
    StringBuilder sb = new StringBuilder();
    for (int j = i; j >= 0; j--) {
        sb.append((int) Math.pow(2, j));
    }
    return sb.toString();
}