Android读取文本文件和分割



我试图读取包含整数的文本文件并将它们存储到2d数组中。问题在于分裂。我可以阅读:

0 0 0
0 1 0
0 0 0

和0-9的任何数字都可以但我有超过9的数字(10,100,1000)。我的方法:

int[][] mapArray = new int[11][8];
    AndroidFileIO file = new AndroidFileIO(context.getAssets());
    InputStream is = null;
    try {
        is = file.readAsset("maps/map.txt");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.d("android", "could not load file");
    }
    Scanner scanner = new Scanner(is);
    scanner.useDelimiter(",");
    for (int i = 0; i < 11; i++) {
        for (int j = 0; j < 8; j++) {
            mapArray[i][j] = scanner.nextInt();
            Log.d("android", "" + mapArray[i][j]);
        }
    }

所以我尝试使用分隔符,而不是它挂起,告诉我我得到一个类型不匹配?在读取文件时分割整数有什么解决方案吗?

您可以使用正则表达式来检索数字:

final Pattern PATTERN = Pattern.compile("(\d+)");
final Matcher matcher = PATTERN.matcher(content);
while (matcher.find()) {
  final String numberAsString = matcher.group(0);
  final Integer number = Integer.valueOf(numberAsString);
  //do something with number
}

看起来您在这里使用','作为分隔符,但是在您在问题中提到的输入中,数字之间有空格。因此,scanner.nextInt()试图将空格字符转换为int,因此类型不匹配。

[编辑]

scanner.nextInt()正在读取您的新行字符。增加'n'检查在阅读字符时忽略它

根据您的目的,您可以将文件中的每一行作为字符串读取,然后拆分。

String line = bufferedReader.readLine();   // line is something like "1 2 3"
String[] row = line.split("\s+");         // got array ["1", "2", "3"]

那么将每个Array元素映射到目标数组就更容易了。
你需要integer。parseint()来获取整数值

决定使用这个作为分隔符:

    scanner.useDelimiter("[\s,rn]+");

相关内容

  • 没有找到相关文章

最新更新