【问题标题】:How to make a matrix from scratch in java如何在java中从头开始制作矩阵
【发布时间】:2016-03-20 06:12:33
【问题描述】:

我正在尝试制作一个根据用户输入制作方阵的程序。我知道数组存在,但我想从头开始制作一个矩阵,以便更好地理解它的基本概念并进一步扩展我对循环的理解。到目前为止,我已经能够制作一个接受一个数字作为该矩阵输入的方阵,例如,我输入了一个 2x2 方阵,虽然我希望它看起来像 1 2 3 4 上面的 1 和 2 3 和 4。我只让它接受它放置在所有四个插槽中的一个用户输入。例如,如果我的用户输入是 1,那么矩阵看起来像这样 1 1 1 1

到目前为止,我的代码如下所示:

    int number;
    System.out.println("What are the dimensions of the matrix?");
    number = in.nextInt();

    for (int k = 0; k < number; k = k +1)
    {
        System.out.println("What are the numbers in your matrix?");
        int matrix_number = in.nextInt();

        for (int i = 0; i < number; i = i + 1)
        {
            for (int j = 0; j < number; j = j + 1)
            {
                 System.out.print(matrix_number);
            }

            System.out.println();

        }

    }

我相信我的问题在于我让用户输入矩阵编号的第一个 for 循环。关于如何更好地编写此代码以便用户可以为矩阵中的每个插槽输入不同数字的任何有用建议?

【问题讨论】:

  • 注意:你可以写++i而不是i = i + 1
  • “从头开始制作矩阵”是什么意思
  • 您希望用户提前输入所有数字还是一次输入一个(即用户按 1,然后按 2,然后您放下一行,用户输入 3,依此类推?)

标签: java for-loop matrix user-input


【解决方案1】:

您似乎正在尝试创建一个矩阵,然后使用从用户读取的值填充它。

创建一个 N x N 整数矩阵

    int[][] matrix = new int[n][n]();

为矩阵单元 [i, j] 赋值:

    matrix[i][j] = someValue;

显然,如果要为每个单元格读取不同的值,则需要多次调用nextInt();即,您要读取的每个值一次。

(其他读者请注意:我不是为 OP 编写此代码,因为他将通过自己编写代码来了解更多信息。)

【讨论】:

  • 糟糕...更正了 new 表达式中的错字。
【解决方案2】:

您可以使用二维数组创建矩阵:

int[][] matrix = new int[row][column]; //row is the number of matrix rows
                                       //column is the number of matrix columns

要访问矩阵的元素并在声明后定义它,可以使用嵌套的 for 循环:

for (i = 0; i < row; i++ )
     for (j = 0; j < column; j++)
     {
        scores[i][j] = value; // value is your chosen integer for that index
     }
}

【讨论】:

    【解决方案3】:

    正如您在问题中提到的,用户只需输入一次,并将其放置在所有四个插槽中。 例如,如果用户输入是 1,那么矩阵看起来像这样 1 1 1 1。 然后不需要第一个for循环,只需将其删除即可。

        int number;
        System.out.println("What are the dimensions of the matrix?");
        number = in.nextInt();
    
        System.out.println("What are the numbers in your matrix?");
        int matrix_number = in.nextInt();
    
        for (int i = 0; i < number; i = i + 1)
        {
           for (int j = 0; j < number; j = j + 1)
           {
                System.out.print(matrix_number);
           }
    
           System.out.println();
       }
    

    【讨论】:

      【解决方案4】:

      您希望用户说出方阵的大小,然后您希望用户告诉您矩阵中的每个数字。这里只需要两个循环:

      int number;
      System.out.println("What are the dimensions of the matrix?");
      number = in.nextInt();
      
      for (int i = 0; i < number; i = i + 1)
      {
          for (int j = 0; j < number; j = j + 1)
          {
              System.out.println("What are the numbers in your matrix?");
              int matrix_number = in.nextInt();
              System.out.print(matrix_number);
          }
          System.out.println();
      }
      

      如果您不希望您的矩阵被“矩阵中的数字是多少?”污染。问题,那么您将需要学习如何将用户输入存储到某种数据结构中。正如您在问题中所说,数组是执行此操作的好方法(二维数组也是如此)。

      如果您愿意学习文件输入或文件输出,那么您可以做您所寻求的,而无需将数字“存储”在一个数组中。从文件中读取数字并将它们输出到屏幕,或者让用户将它们键入为用户输入并将矩阵输出到文件。

      编辑:您可以尝试删除“矩阵中的数字是多少?”通过在 linux 系统上打印退格字符来退出系统。更多在这里: How to delete stuff printed to console by System.out.println()?

      【讨论】:

        猜你喜欢
        • 2018-02-07
        • 1970-01-01
        • 1970-01-01
        • 2021-02-15
        • 1970-01-01
        • 2021-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多