请帮忙。我有钻石打印的右侧,但我在打印它的左侧时遇到问题。如果有人可以提供帮助,我会非常感激。谢谢。 我对我的代码进行了一些更改,现在需要我的代码在钻石中间打印一列而不是两列。 “ 包钻石;
public class NumericDiamond
{
public static void main(String[] 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;
for(int i=1;i<=5;i++)
{
for (int j=noOfSpaces;j>=1;j--)
{
System.out.print(" ");
}
for (int j=1;j<=noOfColumns;j++)
{
System.out.print(noOfColumns);
}
if (i<5)
{
start=i;
}
else
{
start=8-i;
}
{
System.out.print(start+" ");
start--;
}
System.out.println();
{
if(i<3)
{
noOfColumns=noOfColumns+2;
noOfSpaces=noOfSpaces-1;
}
else
{
noOfColumns=noOfColumns-2;
noOfSpaces=noOfSpaces+1;
}
}
}
}
}
'
答案 0 :(得分:1)
当您向屏幕写出内容时,请排成行。 在第一行和最后一行中,您打印1个随机数。在第二行和第四行中,您打印3个随机数。在中间行,您打印5个随机数。 您可以使用制表符或空格将数字放置到其位置。
Random rnd = new Random();
for(int i = 0; i < 5; i++){
if(0 == i || 4 == i) System.out.println("\t\t" + (rnd.nextInt(5)+1) + "\t\t\t" + (i+1));
if(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" + (i+1));
}
像这样。
答案 1 :(得分:1)
要打印菱形,您可以在从 Program::OnNewFile
到 -n
的行和列上使用两个嵌套的 for 循环(或流)。当 n
时获得菱形形状。单元格的值取决于其坐标 n > iAbs + jAbs
和 i
,也可以是某种常量或随机值:
j
输出:
int n = 5;
for (int i = -n; i <= n; i++) {
// absolute value of 'i'
int iAbs = Math.abs(i);
for (int j = -n; j <= n; j++) {
// absolute value of 'j'
int jAbs = Math.abs(j);
// diamond shape (cell value = iAbs + jAbs)
if (iAbs + jAbs > n) {
System.out.print(" ");
} else {
System.out.print(" " + (iAbs + jAbs));
}
}
System.out.println(" i=" + iAbs);
}
同样,您可以使用两个嵌套流:
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
输出:
int n = 5;
IntStream.rangeClosed(-n, n)
// absolute value of 'i'
.map(Math::abs)
.peek(i -> IntStream.rangeClosed(-n, n)
// absolute value of 'j'
.map(Math::abs)
// diamond shape (cell value = n - i - j)
.mapToObj(j -> i + j > n ? " " : " " + (n - i - j))
.forEach(System.out::print))
.mapToObj(i -> " i=" + i)
.forEach(System.out::println);
另见:
• Drawing numeric diamond
• Diamond with nested for loops