我应该编写一个程序,询问用户想要的行数。例如,用户输入4作为number
它将显示1到16的所有数字,排列为4列和4行。如果输入4,这样的东西应该是输出:
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13
正如你所看到的,有一种模式。出现的第一个数字是1,然后它增加到4.下一行开始8然后到5.你可以看到它就像一条蛇。但我的计划不起作用。虽然我已经尝试过模拟我的程序,但我仍然无法弄清楚出了什么问题。
另一个例子是输入3时:
1 2 3
6 5 4
7 8 9
这是我目前的代码:请帮助我谢谢
import java.util.*;
public class ArrayOutput2
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int number = 0;
System.out.print("Enter number of rows: ");
number = input.nextInt();
int[][] num = new int[number][number];
int k=1, i, j;
if (number == 1)
{
num[0][0] = 1;
}
while(k< (number*number))
{
for(i=number; i>=1; i--)
{
if (i%2==1)
{
for(j=number-1; j>=0; j--)
{
num[i-1][j]=k;
k++;
}
}
else
for(j=0; j<=number-1; j++)
{
num[i-1][j]=k;
k++;
}
}
}
for(i=number-1;i<0;i--)
{
for(j=number-1;j<0;j--)
System.out.print(num[i][j]+"\t");
System.out.println();
}
}
}
答案 0 :(得分:4)
看起来num[][]
数组设置正确。
我认为您只需要在最后一个for循环中将<
翻到>=
。
目前你在i小于0时循环,但它从4开始,所以它永远不会进入循环,因此永远不会向控制台打印任何内容。
应该是:
for(i=number-1;i>=0;i--)
{
for(j=number-1;j>=0;j--)
答案 1 :(得分:3)
这确实产生了预期的输出:
Scanner input = new Scanner( System.in );
int number = 0;
System.out.print("Enter number of rows: ");
number = input.nextInt();
int[][] num = new int[number][number];
int k=1, i=1, y = 0;
if (number == 1)
{
num[0][0] = 1;
}
while(y<number)
{
for(int x =0;x<number;++i,++x)
num[y][x] = i;
++y;
if(y<number)
for(int x = number-1;x>=0;++i,--x)
num[y][x] = i;
++y;
}
for(i = 0;i<number;i++)
{
for(int j=0;j<number;++j)
System.out.print(num[i][j]+"\t");
System.out.println();
}
希望它适合你
答案 2 :(得分:0)
我认为在你的情况下使用2D数组是不必要的尝试这个片段:
for (int i=0; i<number; i++) {
if (i%2 == 0) {
for (int j=i*number; j<(i+1)*number; j++) {
System.out.print((j + 1) + " ");
}
} else {
for (int j=(i+1)*number; j>i*number; j--) {
System.out.print(j + " ");
}
}
System.out.println();
}