编号图案打印

时间:2014-11-28 23:46:19

标签: java

如何打印此图案

1 2 3 
4 5 6 
7 8 9

我试着这样做

for (int i = 1; i <= 3; i++) {
    for (int j = i; j <= i + 2; j++) {
        System.out.print(j);
        System.out.print(" ");
    }
    System.out.println();
}

但是,它给了我这个输出

1 2 3 
2 3 4 
3 4 5 

5 个答案:

答案 0 :(得分:5)

试试这个。这没关系。

for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        System.out.print(3*(i-1) + j);
        System.out.print(" ");
    }
    System.out.println();
}

为什么会这样?

嗯......如果仔细观察,你会看到这一点 在行i上,您有以下3个数字:

3*(i-1)+13*(i-1)+23*(i-1)+3

(最后一个数字是可被3整除的数字。)

这就是你的通用公式。

答案 1 :(得分:3)

使用2d阵列时,喝rc可乐,或玩rc玩具。它会帮助你记住Row then Column。

你需要修复你的第二个数组,以便它增加你想要的数字。

像这样:

for (int i = 0; i < 3; i++) {
    for (int j = 1; j <= 3; j++) {
        System.out.print((3*i)+j);
        System.out.print(" ");
    }
    System.out.println();
}

答案 2 :(得分:3)

问题在于,每次进入第一个时都会重置变量j。

所以sifrs,第二次和第三次你得到了正确的答案,但是第四次j正在重置,所以你需要做的是以下几点:

public static void main(String[] args) {
    int j;
    int k = 1;
   for (int i = 1; i <= 3; i++) {
for (j = i; j <= i + 2; j++) {
    System.out.print(k);
    System.out.print(" ");
    k++;
}
System.out.println();
}
}

添加一个新常量k,用于存储迭代次数并根据需要打印它们。希望它有所帮助!

答案 3 :(得分:1)

for (int i = 1; i <= 9; i++) {
    if(i%3==1){
        System.out.println();
    } 
    System.out.print(i);
    System.out.print(" "); 
}

答案 4 :(得分:1)

问题的实施:

IntStream.range(0, MAX)
         .forEach(i -> IntStream.rangeClosed(1, MAX)
                                .mapToObj(j -> j == MAX ? 
                                               String.format("%3d", i * MAX + j) + "\n" :
                                               String.format("%3d", i * MAX + j) + "  ")
                                .forEach(System.out::print)
                 );

在这种情况下,MAX的值为3

MAX = 5 -

的输出
  1    2    3    4    5
  6    7    8    9   10
 11   12   13   14   15
 16   17   18   19   20
 21   22   23   24   25