java - 使用带有用户输入的 java for 循环来制作自定义钻石

标签 java for-loop

我希望制作这样的钻石:

n=2

 *
*$*
 *

n=3

    *
   *$*
  *$*$*
   *$*
    *

n=4

    *
   *$*
  *$*$*
 *$*$*$*
  *$*$*
   *$*
    *

我可以用 * 得到钻石,但不知道如何在组合中添加 $

我的代码如下:

import java.util.Scanner;

public class ForNestedDemo
{
   public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Please input number of lines:");
        int i = 0, j, k, n;
        n = scan.nextInt();

        for (k = 1; k <= (n + 1) / 2; k++) {
            for (i = 0; i < n - k; i++) {
                System.out.print(" ");
            }
            for (j = 0; j < k; j++) {
                System.out.print("*$ ");
            }
            System.out.println("");
        }

        for (k = ((n + 1) / 2); k < n; k++) {
            for (i = 1; i < k; i++) {
                System.out.print(" ");
            }
            for (j = 0; j < n - k; j++) {
                System.out.print(" *");
            }
            System.out.println("");
        }

        scan.close();
    }
}

最佳答案

我同意@GhostCat 是最简单的方法,但为了好玩,我用你的方法弄明白了。

for (k = 1; k < (n + 1); k++) {
    for (i = 0; i < n - k; i++) {
        System.out.print(" ");
    }
    for (j = 0; j < k; j++) {
        if(j == 0)
            if(k == n+1)
                System.out.print("*");
            else
                System.out.print(" *");
        else{
            System.out.print("$*");
        }
    }
    System.out.println("");
}

for (k = 1; k < n; k++) {
    for (i = 0; i < k; i++) {
        System.out.print(" ");
    }
    for (j = 0; j < n - k; j++) {
        if(j == 0)
            if(k == n+1)
                System.out.print("*");
            else
                System.out.print(" *");
        else{
            System.out.print("$*");
        }
    }
    System.out.println("");
}

我已经修复了您的一些错误并在其中添加了一些检查。

我的逻辑是:

  1. 如果你是第一个字符,你是不是中间一行(k == n+1),如果是,只打印*,否则打印 _*.
  2. 如果你不是第一个字符,打印$*

之后,我只是简单地把我的逻辑粘贴到你的下半部分循环中。

关于java - 使用带有用户输入的 java for 循环来制作自定义钻石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40140379/

相关文章:

java - Groovy/POI 在不同系统上返回不同迭代器

c# - UserControl 数组,每个控件都有一个方法来设置那里的标签文本,但得到一个 NullReferenceException。帮助!

bash - 将文件名分配给shell中的变量

c++ - for 循环中的 const 值

ruby - 如何证明 Ruby `for` 循环实际上是使用 `each` 方法实现的?

javascript - "array.length -1"在 JavaScript 中是什么意思?

java - Java 的高性能键值存储

java - 删除作为策略模式一部分的条件代码

java - HashMap 比较

java - Struts 2 和 Hibernate 登录表单