我有从String转换为二维int数组的问题。
假设我有:
String x = "1,2,3;4,5,6;7,8,9"
(在我的程序中它将是来自文本区域的String。)我想创建数组n x n
int[3][3] y = {{1,2,3},{4,5,6},{7,8,9}}
(对于下一阶段是必要的。)我尝试分割字符串并创建一维数组,但我不知道下一步该做什么。
正如您所建议的那样,我首先尝试使用;
然后使用,
进行拆分,但我的解决方案并不好。它仅在有3 x 3
表时才有效。如何创建一个循环制作String数组?
public int[][] RunMSTFromTextFile(JTextArea ta)
{
String p = ta.getText();
String[] tp = p.split(";");
String tpA[] = tp[0].split(",");
String tpB[] = tp[1].split(",");
String tpC[] = tp[2].split(",");
String tpD[][] = {tpA, tpB, tpC};
int matrix[][] = new int[tpD.length][tpD.length];
for(int i=0;i<tpD.length;i++)
{
for(int j=0;j<tpD.length;j++)
{
matrix[i][j] = Integer.parseInt(tpD[i][j]);
}
}
return matrix;
}
答案 0 :(得分:3)
;
拆分以获取行。 x
)
,
拆分以获取每行的值。y
)
parseInt
的{{1}}方法之一)并将其添加到数组的Integer
。答案 1 :(得分:2)
如果您已创建int[9]
并希望将其拆分为int[3][3]
:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
toArray[i][j] = fromArray[(3*i) + j);
}
}
现在,如果二维数组不是矩形,即内部数组的大小对于所有外部数组都不相同,那么您需要更多的工作。您最好使用Scanner
并在nextString
和next
之间切换。最大的挑战是,在到达行终止分号之前,您不会知道每行中元素(列)的数量
答案 2 :(得分:2)
使用拆分后,请查看Integer.parseInt()
以获取数字。
String lines[] = input.split(";");
int width = lines.length;
String cells[] = lines[0].split(",");
int height = cells.length;
int output[][] = new int[width][height];
for (int i=0; i<width; i++) {
String cells[] = lines[i].split(",");
for(int j=0; j<height; j++) {
cells[i][j] = Integer.parseInt(cells[j]);
}
}
然后您需要决定如何处理NumberFormatExceptions
答案 3 :(得分:0)
使用2分裂的解决方案:
String input = "1,2,3;4,5,6;7,8,9";
String[] x = input.split(";");
String[][] result = new String[x.length][];
for (int i = 0; i<x.length; i++) {
result[i] = x[i].split(",");
}
这给出了一个二维数组的字符串,您需要在之后解析这些字符串,这取决于您对这些数字的用途。以下解决方案显示了在构建结果时如何解析它们:
String input = "1,2,3;4,5,6;7,8,9";
String[] x = input.split(";");
int[][] result = new int[x.length][];
for (int i = 0; i < x.length; i++) {
String[] row = x[i].split(",");
result[i] = new int[row.length];
for(int j=0; j < row.length; j++) {
result[i][j] = Integer.parseInt(row[j]);
}
}
答案 4 :(得分:0)
超级简单的方法!!!
package ADVANCED;
import java.util.Arrays;
import java.util.Scanner;
public class p9 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String x=sc.nextLine();
String[] array = x.split(",");
int length_x=array.length;
int[][] two=new int[length_x/2][2];
for (int i = 0; i <= length_x-1; i=i+2) {
two[i/2][0] = Integer.parseInt(array[i]);
}
for (int i = 1; i <= length_x-1; i=i+2) {
two[i/2][1] = Integer.parseInt(array[i]);
}
}
}