Java 如何打印随机数的菱形?

Java 如何打印随机数的菱形?,java,ascii-art,Java,Ascii Art,有人能帮我完成这个数字钻石吗?我有右边的钻石打印出来,但我有麻烦打印出来的左边。如果有人能帮忙,我会非常感激。 我对代码做了一些更改。现在我需要我的代码来打印一个列在中间的钻石,而不是两个。< /P> 公共类数字钻石{ 公共静态void main(字符串[]args){ /* 1 1 4 3 4 2 4 4 5 7 4 3 5 3 5 4 4 5 */ int noOfColumns=1; int noOfSpaces=3;

有人能帮我完成这个数字钻石吗?我有右边的钻石打印出来,但我有麻烦打印出来的左边。如果有人能帮忙,我会非常感激。 我对代码做了一些更改。现在我需要我的代码来打印一个列在中间的钻石,而不是两个。< /P>
公共类数字钻石{
公共静态void main(字符串[]args){
/*
1         1
4  3  4      2
4  4  5  7  4   3
5  3  5      4
4         5
*/
int noOfColumns=1;
int noOfSpaces=3;
int start=0;
对于(int i=1;i=1;j--){
系统输出打印(“”);
}

对于(intj=1;j当你在屏幕上写东西时,按行思考。 在第一行和最后一行中,打印1个随机数。在第二行和第四行中,打印3个随机数。在中间行中,打印5个随机数。 可以使用制表符或空格将数字放置到其位置

Random rnd=new Random();
对于(int i=0;i<5;i++){
如果(0==i | | 4==i)System.out.println(“\t\t”+(rnd.nextInt(5)+1)+”\t\t\t”+(i+1));
如果(1==i | | 3==i)System.out.println(“\t”+(rnd.nextInt(5)+1)+“\t”+(rnd.nextInt(5)+1)+“\t”+(rnd.nextInt(5)+1)+“\t\t”+(i+1));
if(2==i)System.out.println((rnd.nextInt(5)+1)+“\t”+(rnd.nextInt(5)+1)+“\t”+(rnd.nextInt(5)+1)+“\t”+(rnd.nextInt(5)+1)+“\t”+(rnd.nextInt(5)+1)+“\t”+);
}

类似于此。

要打印菱形,可以使用两个嵌套for循环(或流)在从
-n
n
的行和列上。当
n>iAbs+jAbs
时获得菱形。单元格的值取决于其坐标
i
j
,也可以是某种常量或随机值:

int n=5;
for(inti=-n;i IntStream.rangeClosed(-n,n)
//“j”的绝对值
.map(数学::abs)
//菱形(单元值=n-i-j)
.mapToObj(j->i+j>n?“:”+(n-i-j))
.forEach(系统输出::打印))
.mapToObj(i->“i=“+i”)
.forEach(System.out::println);
输出:

           5            i=5
         5 4 5          i=4
       5 4 3 4 5        i=3
     5 4 3 2 3 4 5      i=2
   5 4 3 2 1 2 3 4 5    i=1
 5 4 3 2 1 0 1 2 3 4 5  i=0
   5 4 3 2 1 2 3 4 5    i=1
     5 4 3 2 3 4 5      i=2
       5 4 3 4 5        i=3
         5 4 5          i=4
           5            i=5
           0            i=5
         0 1 0          i=4
       0 1 2 1 0        i=3
     0 1 2 3 2 1 0      i=2
   0 1 2 3 4 3 2 1 0    i=1
 0 1 2 3 4 5 4 3 2 1 0  i=0
   0 1 2 3 4 3 2 1 0    i=1
     0 1 2 3 2 1 0      i=2
       0 1 2 1 0        i=3
         0 1 0          i=4
           0            i=5

另见: