我有一个输入字符串,其大小为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循环但不确定。
答案 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("");
}
它适用于任何数量的输入。