我目前正在为我的入门级 CS 期末考试而学习,并且遇到了一些问题,我真的很艰难。我最担心的一个要求我用 Java 生成代码,以在屏幕上创建以下输出:
+
+++0
++++++00
++++++++++000
...(这种模式持续 200 行)
这似乎是一个非常基本的问题,但我该怎么做呢?我知道我应该编写一些数组并使用 for 循环来遍历它们并将内容输出到屏幕上,但我真的很感激有关如何解决这个问题的一些指导,以及其他类似问题。谢谢!
数字的模式0
只是一个等差数列。数量+
如下:
Row 1: 1
Row 2: 3 = 1 + 2
Row 3: 6 = 3 + 3
Row 4: 10 = 6 + 4
原来这些是三角数。因此,计算循环中每一行的三角形数,并有一个嵌套循环打印+
多次,然后打印所需数量的0
.
我认为这不值得-1。初学者问题不等于一个坏问题。
至于问题本身。您必须先仔细识别模式,然后用简单的英语说出它。模式很简单。
从 1 个十字和 0 个零开始。对于每次迭代,从 2 个单位的增长开始,将十字架的增长增加 1(所以它是 +1、+2、+3...),从 1 个单位开始将零的增长增加 1。
现在将其放入伪代码中,然后对其进行编码。一定要先了解这些模式。我不能强调这一点。直接进入编码不会帮助你。
首先,您需要能够识别模式,然后您需要能够对其进行编码。
我要冒个险,建议你把这个问题的两个“步骤”混合在一起,所以让我们在划分它们时非常具体。
The (parenthesis) items are the _additional_ elements.
index 0 : +
index 1 : +(++)(0)
index 2 : +++(+++)0(0)
index 3 : ++++++(++++)00(0)
所以一个很好的猜测是该模式可以描述为:
the previous number of +'s (and index + 1 more),
followed by the previous number of 0's (and one more).
结合
index 0 is "+"
您可能想根据这个“规则”计算索引 4、5 和 6,看看它是否正确地描述了模式。
现在你有了模式,你真的只需要两个变量,+
符号的数量和0
s 的数量。您可以从前一个计算“下一个”。编码不应该太难,但如果是这样,那么在另一个问题中发布您的程序和该程序的“新”问题。
public class Answer {
public static void main(String[] args) {
int plusCount = 1;
for(int i=0; i<200; i++) {
for(int j=0; j<plusCount; j++) {
System.out.write('+');
}
plusCount += i+2;
for(int j=0; j<i; j++) {
System.out.write('0');
}
System.out.println();
}
}
}