class pattern
{
public static void main()
{
int i,j,p=1;
for(i=1;i<=5;i++)
{
for(j=1;j<=i; j++)
{
System.out.print(p+" ");
p=p+2;
}
if(i>=2)
p=p-2;
System.out.println ();
}
}
}
我想要下面的书面输出
1
3 5
5 7 9
7 9 11 13
9 11 13 15 17
但是上面给出的代码所获得的输出在下面给出
1
3 5
5 7 9
9 11 13 15
15 17 19 21 23
我希望第二行的最后一位显示在第三行的开头,第三行的最后两位显示在第四行的开头,依此类推。
答案 0 :(得分:0)
在我看来,您的问题是您试图保留错误的内容,即所打印的号码。相反,请跟踪当前所在行和当前所在行中的当前项目。
循环从起始编号开始,并打印您需要打印的项目
IntStream.range(0, 5)
.mapToObj(line -> IntStream.range(0, line+1)
.map(i -> (line*2+1) + (2 * i))
.mapToObj(Integer::toString)
.collect(Collectors.joining(" ")))
.forEach(System.out::println);
答案 1 :(得分:0)
int length = 5;
for(int start = 1; start < length*2; start += 2){
for(int j = start;j < start*2; j += 2)
System.out.print(j + " ");
System.out.println();
}
正如AntoineB所说,StackOverflow不是一个做家庭作业的网站,您至少应该尝试自己解决问题,如果某些部分您不了解,请寻求帮助。不要指望别人做你的家庭作业
答案 2 :(得分:0)
请注意每行第一个数字的模式:
row 0 -> 1
row 1 -> 3
row 2 -> 5
row 3 -> 7
row 4 -> 9
这是row*2 + 1
因此,您需要为每一行循环并计算第一个数字。然后,为每列添加2。
for(int row = 0; row < 5; row++) {
int value = 2*row + 1;
for(int col=0; col <= row; col++) {
System.out.print(value+" ");
value = value+2;
}
System.out.println();
}