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

在java中打印v形

在java中打印v形

哔哔one 2021-10-28 09:41:46
我是 Java 编程的新手,我正在我的教科书中进行这项练习。目标是打印V数字的形状模式。从下图中,您可以看到输出应该是什么样子。我在创建另一半数字时遇到问题。我已将我的代码粘贴在下面以供参考。for (int i = 7; i >= 1; i--) {    for (int j = 1; j <= i; j++) {         System.out.print(" ");    }    System.out.print(i);    for (int k = 1; k >= i*2; k++) {        System.out.print(" ");    }    System.out.println(i);
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

使用以下代码(只是对你的代码做了一些修改,没有检查其效率):


public static void main(String[] args) {

    for (int i = 7; i >= 1; i--) {

        for (int k = 7; k >= i; k--) {

            System.out.print(" ");  // Print 7-i number of spaces before start of each line

        }

        System.out.print(i); // Print i

        for (int j = 1; j <= i*2; j++) {

            System.out.print(" "); // Print i*2 number of spaces after printing i

        }

        System.out.println(i); // Print i

    }

}


查看完整回答
反对 回复 2021-10-28
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

而不是嵌套循环(并向后迭代),我会用一种方法来分解空白的生成,以重复给String定的次数。喜欢,


private static String repeat(String s, int n) {

    return Stream.generate(() -> s).limit(n).collect(Collectors.joining());

}

那么我更喜欢一个StringBuilder和一个单一的电话println喜欢


public static void main(String[] args) {

    int start = 6;

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

        int v = start - i;

        StringBuilder sb = new StringBuilder();

        sb.append(repeat(" ", i)).append(v);

        sb.append(repeat(" ", 2 * v)).append(v);

        System.out.println(sb);

    }

}


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 226 浏览

添加回答

举报

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