我希望制作这样的钻石:
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("");
}
我已经修复了您的一些错误并在其中添加了一些检查。
我的逻辑是:
- 如果你是第一个字符,你是不是中间一行(
k == n+1
),如果是,只打印*
,否则打印_*
. - 如果你不是第一个字符,打印
$*
。
之后,我只是简单地把我的逻辑粘贴到你的下半部分
循环中。
关于java - 使用带有用户输入的 java for 循环来制作自定义钻石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40140379/