如何打印此图案
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
答案 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)+1
,3*(i-1)+2
,3*(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)
java-8问题的实施:
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