Java - 按行读取一串数字

时间:2014-09-23 15:02:09

标签: java android ondraw

我有这种形式的网格:

0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 

我将以字符串形式收到它:

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

这只是5乘5网格的一个例子。但实际上,我有20列15行。网格中的值不仅仅为零。

但是,我想知道如何按行读取这样的数字串。我依赖这个字符串来使用onDraw方法在android的GUI中检查网格颜色。我的方法逐行读取的位置。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

Haven没有测试过它。但我认为你需要这样的东西。拆分输入,每20个数字创建一个新的array

String input = //put the input here

String[] inputSplitted = input.split(" "); //create array that holds all values.


int colSize = 20;

for(int i = 0; i < inputSplitted.length; i ++){
    String[] row = new String[20]; //create array to hold a row
    for(int j = i; j < i + row.length; j++) 
        row[j-i] = inputSplitted[j]; //add ekements the row

    // do something with row

    i += row.length; //increase i by row length so you add row.length + 1 index to the next row
}

请注意,现在每一行都是String[]。如果您想将数组的元素用作int,则必须执行Integer.parseInt(row[i]);等。

希望这有帮助。

如果您想将值存储在2d array中,请在下面发表评论,我会更新我的答案。

答案 1 :(得分:0)

感谢您给我机会自学和思考。当然,非常感谢@xgeorgekx提供的代码,这些代码使用您的代码作为参考,让我自己解决自己的问题。我这样做了,我知道它没有完全优化。我欢迎任何建议!

首先,我摆脱了字符串中的所有空格。然后使用numColumns作为15和numRows作为20,我使用2个循环并存储解析为int的字符串的值,因为我需要数组的元素作为cellType以便设置颜色。

String spaceFilter = map.replaceAll(" ", "");       
    for (int i = 0; i < numColumns; i++) {
        for (int j = 0; j < numRows; j++) {
            if (spaceFilter.length() != 0) {
                cellType[i][j] = Integer.parseInt(spaceFilter.substring(0,1));
                spaceFilter = spaceFilter.substring(1);
            }
        }
    }