繁体   English   中英

在 Java 中生成以不同数字开头的数字模式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM