为了账号安全,请及时绑定邮箱和手机立即绑定

如何右对齐弗洛伊德 2 的三角幂的打印

如何右对齐弗洛伊德 2 的三角幂的打印

青春有我 2024-01-28 16:14:13
如何在输出弗洛伊德三角形的最后 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(" ");     }谢谢
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

  int lineLength = 8;


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


        //print number

        StringBuilder sb = new StringBuilder();

        for (int j = i; j >= 0; j--) {

            sb.append((int) Math.pow(2, j));

        }


        //print space

        for (int spaces = lineLength - sb.length(); spaces > 0; spaces--) {

            System.out.print(" ");

        }

        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();

}


查看完整回答
反对 回复 2024-01-28
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

       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))));

为填充添加直到方法:


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();

    }


查看完整回答
反对 回复 2024-01-28
  • 2 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信