数组循环程序



我应该编写一个程序来请求用户想要的行数。例如,如果用户输入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();   
        }
    }
}

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

循环开始

k=1;
while (k<(number*number)); // which is like while(1<1*1)==FALSE
因此,永远不会使用

循环。你可以使用:

1) do-while循环至少运行一次
2)或者在while()循环结束后添加if语句:

// Using an IF statement immediately after the unmodified while()
if (number==1)
{
   num[0][0]=1;
}

// or with a loop DO-WHILE
    do
    {
        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++;
              }
         }
   }while(k<(number*number));

number = 1, 2D array int[][] num没有被填充,因为它没有进入循环while(k<(1*1)),因此底部for循环打印2D值只打印0,因为数组本身没有被初始化。

num[0][0]未初始化,因为您没有进入循环。在循环之前试试:

if (number == 1)
    num[0][0] = 1;
if(number == 1 ) {
    System.out.println("1");
    return;
}

相关内容

  • 没有找到相关文章

最新更新