【问题标题】:Split string array to int array将字符串数组拆分为 int 数组
【发布时间】:2016-03-15 22:03:29
【问题描述】:

我想转换字符串数组,例如

str1[][] ={{"1,2,3,4","0","2,1"}};

到这样的int数组:

int arr[][]={{1,2,3,4},{0,0,0,0},{2,1,0,0}} 

我不能只使用 split 方法,因为 tempString 的大小在每次迭代后都会改变。

我的代码:

int numOfelements = 3;

        String str1[][] = { { "1,2,3,4", "0", "2,1" } };
        int graph[][] = new int[numOfelements][numOfelements];
        String str[]= new String[numOfelements];


            for (int i = 0; i < numOfelements; ++i) {
                str = str1[i][0].split(",");
                for (int j = 0; j < numOfelements; ++j) {
                    try {
                        if (str.length < j)
                            graph[i][j] = Integer.parseInt(str[i]);
                        else
                            graph[i][j] = 0;
                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(new JFrame(), "Error in the data!",
                                "Error", JOptionPane.ERROR_MESSAGE);
                        break;
                    }
                }
            }

【问题讨论】:

  • 问题是什么?
  • 我认为,您应该使用 str = str1[0][i].split(","); 而不是 str = str1[i][0].split(","); 来切换索引
  • @Expiredmind 看看我的解决方案。
  • "1,2,3,4,5" 这样的字符串可能吗?如果是这样,将其转换为{1,2,3,4}{1,2,3,4,5}

标签: java arrays string split


【解决方案1】:

您可以编写自定义方法来用零填充数组。 .split()谨慎使用还是可以使用的。

public static int[] fillArray(String s, int size){
    String[] tok = str.split(",");
    int[] newArr = new int[size];

    for(int x=0; x<Math.min(size, tok.length); x++)
        newArr[x] = Integer.parseInt(tok[x]);

    for(int x=Math.min(size, tok.length); x<Math.max(size, tok.length); x++)
        newArr[x] = 0;

    return newArr;
}

获取数组数据并用零填充并放回新数组中:

int[][] arr;
for(int x=0; x<str1[0].length; x++)
    arr[0][x] = fillArray(str1[0][x], 4);  //size of 4 can be changed to your needs

【讨论】:

  • 我必须稍微修改您的解决方案,但它给了我很好的线索,谢谢!
【解决方案2】:

试试这个解决方案:

int numOfelements = 4;
        String str1[][] = { { "1,2,3,4", "0", "2,1" }};
        int graph[][] = new int[numOfelements][numOfelements];
        String str[]= new String[numOfelements];

        for (int k = 0; k < str1.length; k++) {
            int len =str1[k].length;    
            for (int i = 0; i < len; i++) {
                str = str1[k][i].split(",");    
                for(int j = 0; j < str.length; j++ )
                    graph[i][j]=Integer.parseInt(str[j]);
            }
        }

【讨论】:

    猜你喜欢
    • 2017-07-16
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多