[英]Generate a number-pattern in Java beginning with different numbers
我正在为编程考试做准备。 我被困在这个任务上,我理解模式的逻辑(至少我是这么认为的),但我不知道如何解决这个问题。
输入a = 6
输出需要如下所示:
012345
123456
234567
345678
456789
567890
输入a = 3
输出需要如下所示:
012
123
234
输入a = 4
输出需要如下:
0123
1234
2345
3456
但我得到了这个:
0 1 2 3 4 5
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5
这是我的代码:
for (int i = 0; i <= a; i++) {
for (int j = i; j < a; j++) {
System.out.print(j + " ");
}
System.out.println();
}
您需要进行这些更改以获得所需的输出:
外部for
循环的终止条件应该是i < a
;
内部for
循环的终止条件应该是j < a + i
;
您打印的数字不应该是j
而是j % 10
以满足您提供的数据样本(对于输入a=6
它打印0
作为最后一行的最后一个数字而不是10
,这意味着我们不需要j
,但只有最右边的数字是除以10
的余数)。
这就是它可以修复的方法:
public static void printNumbers(int a) {
for (int i = 0; i < a; i++) {
for (int j = i; j < a + i; j++) {
System.out.print(j % 10 + " ");
}
System.out.println();
}
}
观察:由于它是二维输出,我们将需要 2 个循环(一个在另一个内部)。
此外,每一行的起点是最后一行开始的值 +1 。
如果值超过 10,那么我们将只保留个位值(如最后一行)。 (因此我们使用模数运算符 % 来帮助提取个位)
代码 :
class Main {
public static void main(String[] args) {
int n = 6;
pattern(n);
}
private static void pattern(int n) {
int k = 0;
for (int i = 0; i < n; i++) {
for (int j = k; j < k + n; j++) {
System.out.print(j % 10);
}
k = i + 1;
System.out.println();
}
}
}
答案是:
012345
123456
234567
345678
456789
567890
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.