【问题标题】:Array loop program logic数组循环程序逻辑
【发布时间】:2012-12-30 17:45:50
【问题描述】:

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

    }
}

【问题讨论】:

  • 它不起作用是什么意思?您看到什么输出或错误?
  • Array looping program 的可能重复项
  • 不确定是否需要多维数组。当你达到输入限制时,只需一个简单的循环并换行。
  • 不是重复的。这个的输出和你说的不一样 Till
  • 输入数字时没有任何反应

标签: java arrays multidimensional-array logic


【解决方案1】:

看起来num[][] 数组设置正确。

我认为您只需在最后一个 for 循环中将 &lt; 翻转为 &gt;=

目前您在 i 小于 0 时循环 i,但它从 4 开始,因此它永远不会进入循环,因此永远不会向控制台打印任何内容。

应该是:

 for(i=number-1;i>=0;i--)
 {
    for(j=number-1;j>=0;j--)

【讨论】:

  • 请注意,即使num 设置正确,使用这样的二维数组仍然是错误的。
  • 不产生预期的输出
  • 确实如此。我已经在这里运行了,我刚刚更新它应该是 >= not >
  • @TheocharisK。可能有更有效的方法,但我不会重新设计整个应用程序 ;-)
  • Cowls,输入偶数时无法正常工作,但输入奇数时有效
【解决方案2】:

这确实会产生异常输出:

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();   
   }

希望对你有用

【讨论】:

    【解决方案3】:

    我认为在你的情况下使用 2D 数组是不必要的,试试这个 sn-p:

     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();
            }
    

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 2022-11-14
      • 2016-05-17
      • 1970-01-01
      • 2015-12-17
      相关资源
      最近更新 更多