Java 数组循环程序

Java 数组循环程序,java,arrays,logic,Java,Arrays,Logic,我应该写一个程序,询问用户想要的行数。例如,如果用户输入5,则将显示25到1之间的所有数字,这些数字按5列5行排列。如果输入5,则输出应为类似的内容: 25 24 23 22 21 16 17 18 19 20 15 14 13 12 11 6 7 8 9 10 5 4 3 2 1 正如你所看到的,有一种模式。第一个出现的数字是该数字的平方。然后下一个数字是数字的平方减1。在达到21之前,5将减去16。然后加1,直到达到20

我应该写一个程序,询问用户想要的行数。例如,如果用户输入5,则将显示25到1之间的所有数字,这些数字按5列5行排列。如果输入5,则输出应为类似的内容:

25  24  23  22  21
16  17  18  19  20  
15  14  13  12  11  
 6   7   8   9  10  
 5   4   3   2   1
正如你所看到的,有一种模式。第一个出现的数字是该数字的平方。然后下一个数字是数字的平方减1。在达到21之前,5将减去16。然后加1,直到达到20。正如你所看到的,它就像一条蛇

问题是它适用于除输入1之外的任何数字。0是输入1时的当前结果

这是我目前的密码:请帮助我,谢谢

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;

            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=0;i<number;i++)
        {
             for(j=0;j<number;j++)

             System.out.print(num[i][j]+"\t");
             System.out.println();   
        }

    }
}
import java.util.*;
公共类ArrayOutput2
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
整数=0;
System.out.print(“输入行数:”);
number=input.nextInt();
int[][]num=新的int[number][number];
int k=1,i,j;
而(k<(数字*数字))
{
对于(i=number;i>=1;i--)
{
如果(i%2==1)
{
对于(j=number-1;j>=0;j--)
{
num[i-1][j]=k;
k++;
}
}
其他的

对于(j=0;j当
number=1
时,2D
数组int[]]num
不会填充,因为它不会进入循环
;而(k当
number=1
时,2D
数组int[]]num
不会填充,因为它不会进入循环
,而(k
num[0][0]
由于您没有进入循环,因此尚未初始化。请在循环之前尝试以下操作:

if (number == 1)
    num[0][0] = 1;

num[0][0]
尚未初始化,因为您没有进入循环。请在循环之前尝试以下操作:

if (number == 1)
    num[0][0] = 1;

假设用户输入
1
作为值,因此
number==1
。 您分配了一个数组num[1][1],这是一个只有一个可能单元格的数组,
number[0][0]

然后启动循环

k=1;
while (k<(number*number)); // which is like while(1<1*1)==FALSE

假设用户输入
1
作为值,因此
number==1
。 您分配了一个数组num[1][1],这是一个只有一个可能单元格的数组,
number[0][0]

然后启动循环

k=1;
while (k<(number*number)); // which is like while(1<1*1)==FALSE

如果您输入
1
,那么
while(k开始思考如果用户输入
1
,您想要什么输出)。返回的是单个元素
1
,还是有一种模式?@AurA请注意。如果您输入
1
那么
while(k开始思考如果用户输入
1
,您想要什么输出。返回的是单个元素
1
,还是有一种模式?@AurA请注意。