【问题标题】:Loop not giving me desired matrix output循环没有给我想要的矩阵输出
【发布时间】:2017-03-16 17:59:53
【问题描述】:

我正在尝试在方阵中显示一个数字数组,该方阵以蛇形图案增加 1。无法获得正确的输出。用户输入行/列并显示矩阵。看看下面的照片。我也尝试过使用模数的偶数/奇数行的 if 语句,但仍然得到相同的输出。 (请耐心等待,我是新手,对于格式或我缺少信息感到抱歉)

http://imgur.com/a/ZDhFw

import java.util.Scanner;



public class A3_Q2 {

public static void main(String[] args) 
{
    // TODO Auto-generated method stub

    Scanner keyboard = new Scanner(System.in);

    System.out.println("[-------------------------]");
    System.out.println("[      Array Pattern      ]");
    System.out.println("[-------------------------]");

    System.out.println("How many rows/columns do you want your array to have? (Mist be at least 3):");


    int arraySize = keyboard.nextInt();

    while(arraySize < 3) 
    {
        System.out.println("Lets try this again ....");
        System.out.println("How many rows/columns do you want your array to have? (Mist be at least 3):");
        arraySize = keyboard.nextInt(); 
    }


    int [][] pattern = new int[arraySize][arraySize];

    int i = 0;
    int number = 1;

    while (i < arraySize) 
    {   
        for (int j = 0; j < arraySize; ++j)
        {
            pattern[i][j] = number;
            System.out.printf("%3d", pattern[i][j]);
            number++;   
        }   

        System.out.println("");
        ++i;
        for (int j = arraySize-1; j >= 0; --j)

        {
        pattern[i][j] = number;
        System.out.printf("%3d", pattern[i][j]);
        number++;   
        }

        System.out.println("");
        ++i;    
    }   
    }   
}

【问题讨论】:

    标签: java loops matrix


    【解决方案1】:

    我已更改您的代码以使其正常工作。正如您已经提到的,您可以在此处使用模运算符。

    public static void main(String[] args)
    {
    
        Scanner keyboard = new Scanner(System.in);
    
        System.out.println("[-------------------------]");
        System.out.println("[      Array Pattern      ]");
        System.out.println("[-------------------------]");
    
        System.out.println("How many rows/columns do you want your array to have? (Mist be at least 3):");
    
    
        int arraySize = keyboard.nextInt();
    
        while(arraySize < 3)
        {
            System.out.println("Lets try this again ....");
            System.out.println("How many rows/columns do you want your array to have? (Mist be at least 3):");
            arraySize = keyboard.nextInt();
        }
    
    
        int [][] pattern = new int[arraySize][arraySize];
    
        int number = 1;
    
        for(int i=0;i<arraySize;i++){
            if(i%2==0){
              for(int j=0;j<arraySize;j++){
                   pattern[i][j]=number;
                    number++;
                 }
            }
            else{
                for(int j=arraySize-1;j>=0;j--){
                    pattern[i][j]=number;
                    number++;
                }
            }
            for(int j=0;j<arraySize;j++){
                System.out.printf("%3d", pattern[i][j]);
            }
            System.out.println();
        }
    }
    

    【讨论】:

    • 啊,好吧,当我使用 if/else 时,我明白了我的错误在哪里。谢谢!
    【解决方案2】:

    编辑:在 IDE 中对此进行了测试以确保其正常工作。

    你首先需要有一个pattern[i][j]的初始值。

    for (int i = 0; i < arraySize; i++) {
        for (int j = 0; j < arraySize; j++) {
            pattern[i][j] = arraySize*i + j + 1;
        }
    }
    

    然后你需要有一个条件,当 i 为偶数时按升序打印数字,当 i 为奇数时按降序打印。

    for (int i = 0; i < arraySize; i++) {
        if (i % 2 == 0) {
           for (int j = 0; j < arraySize; j++) {
               System.out.printf("%3d", pattern[i][j]);
           }
        } else {
           for (int j = arraySize - 1; j >= 0; j--) {
               System.out.printf("%3d", pattern[i][j]);
           }
        }
        System.out.println();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 2017-03-24
      • 2017-09-23
      • 1970-01-01
      相关资源
      最近更新 更多