【问题标题】:Java - String to matrixJava - 字符串到矩阵
【发布时间】:2015-07-29 09:05:05
【问题描述】:

我有一个输入字符串,它的大小为 9 或 16 或 25...(所以总是一个具有整数根的数字。)

我需要从中创建一个二维矩阵,我想将其存储在一个二维数组中。我知道如何将它存储在一维数组中,但我不知道如何以正确的方式上传带有字符串元素的二维数组。

应该是这样的:

(假设我们现在有 9 个字符)

String Matrix[][] = {
        { 1, 2, 3 },
        { 4, 5, 6 },
        { 7, 8, 9 } };

但顺序是这样的:

1  2  3
4  5  6
7  8  9

我想我会使用两个 2 for 循环,但不确定。

【问题讨论】:

  • 您试图摆脱的“正确”顺序是什么?还举一个输入字符串的例子。
  • Matrix 变量应该是一维的
  • 你能告诉我们你目前的算法吗?
  • 请发布正确的输入字符串
  • 我认为最后一次编辑是不正确的。原文将输入显示为字符串的一维数组,而不是所需的输出。问题和答案不再以这种方式相关。

标签: java arrays matrix


【解决方案1】:

一个好的方法是计算字符串长度的平方根:这样你会找出矩阵大小,然后将字符串拆分为你想要的矩阵的“行”或“列”。

int matrixSize = Math.sqrt(input.length());
for(int i = 0; i<matrixSize; i++) {
    for(int j = 0; j<matrixSize; j++){
        matrix[i][j] = input[j];
        j++;
    }
}

交换矩阵中的 i 和 j 以换行换列。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    试试这个

    string s="123456789";
    int n=new int[3][3],p=0;
    for(int i = 0; i<3; i++)
        for(int j = 0; j<3; j++){
            matrix[i][j] =Integer.parseInt(s[p]);
            P++;
        }
    

    您可以相应地编辑二维数组的维度。

    【讨论】:

      【解决方案3】:
      String input = "1,2,3,4,5,6,7,8,9";
      String[] numbers = input.split(",");
      
      int size = (int) Math.sqrt(numbers.length);
      
      String[][] matrix = new String[size][size];
      
      for (int i = 0; i < size; ++i) {
          for (int j = 0; j < size; ++j) {
              matrix[i][j] = numbers[i * size + j];
          }
      }
      
      for (int i = 0; i < size; ++i) {
          for (int j = 0; j < size; ++j) {
              System.out.print(matrix[i][j] + " ");
          }
      
          System.out.println();
      }
      

      【讨论】:

        【解决方案4】:

        让我们猜猜你的输入会是这样的:

         String input="1,2,3,4,5,6,7,8,9";
        

        然后你可以做类似的事情:

            String[] inputArray=input.replace("\"", "").split(",");
            for (int i = 0; i < inputArray.length; i++) {
                System.out.println(inputArray[i]);
            }
        
            int matrixSize=(int) Math.ceil(Math.sqrt(inputArray.length));
        
            int i,j;
            int index=0;
            for(i=0;i<matrixSize;i++)
            {
                for(j=0;j<matrixSize && index<inputArray.length;j++,index++)
                    System.out.print(inputArray[index]);
                System.out.println("");
            }
        

        它适用于任意数量的输入。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-16
          • 1970-01-01
          • 2023-03-28
          • 2019-07-09
          相关资源
          最近更新 更多