Java - 字符串到矩阵

时间:2015-07-29 09:05:06

标签: java arrays matrix

我有一个输入字符串,其大小为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循环但不确定。

4 个答案:

答案 0 :(得分:4)

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

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以切换列的行。

希望这有帮助。

答案 1 :(得分:1)

试试这个

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++;
    }

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

让我们猜测您的输入将是:

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

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