Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android读取文本文件和拆分_Java_Android_Arrays_Multidimensional Array - Fatal编程技术网

Java Android读取文本文件和拆分

Java Android读取文本文件和拆分,java,android,arrays,multidimensional-array,Java,Android,Arrays,Multidimensional Array,我试图读取一个包含整数的文本文件,并将它们存储到二维数组中。 问题是分裂。 我可以阅读: 0 0 0 0 1 0 0 0 0 很好,任何数字都是0-9,但我的数字超过9(101001000)。 我的方法: int[][] mapArray = new int[11][8]; AndroidFileIO file = new AndroidFileIO(context.getAssets()); InputStream is = null; try { i

我试图读取一个包含整数的文本文件,并将它们存储到二维数组中。 问题是分裂。 我可以阅读:

0 0 0
0 1 0
0 0 0
很好,任何数字都是0-9,但我的数字超过9(101001000)。 我的方法:

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]);
        }
    }
int[]mapArray=newint[11][8];
AndroidFileIO文件=新的AndroidFileIO(context.getAssets());
InputStream=null;
试一试{
is=file.readAsset(“maps/map.txt”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
Log.d(“android”,“无法加载文件”);
}
扫描仪=新扫描仪(is);
scanner.useDelimiter(“,”);
对于(int i=0;i<11;i++){
对于(int j=0;j<8;j++){
mapArray[i][j]=scanner.nextInt();
Log.d(“安卓”和“+mapArray[i][j]);
}
}
所以我尝试使用分隔符,但它挂起并告诉我类型不匹配?
在读取文件时,是否有拆分整数的解决方案?

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

[编辑]

然后,
scanner.nextInt()
正在读取新行字符。为
'\n'

阅读字符时忽略它。

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

[编辑]

然后,
scanner.nextInt()
正在读取新行字符。为
'\n'

并在读取字符时忽略它。

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

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
}

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

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
}

根据您的用途,您可以将文件中的每一行作为字符串读取, 然后把它分开

String line = bufferedReader.readLine();   // line is something like "1 2 3"
String[] row = line.split("\\s+");         // got array ["1", "2", "3"]
这样就更容易将每个数组元素映射到目标数组。

您需要Integer.parseInt()来获取整数值。

根据您的用途,您可以将文件中的每一行作为字符串读取, 然后把它分开

String line = bufferedReader.readLine();   // line is something like "1 2 3"
String[] row = line.split("\\s+");         // got array ["1", "2", "3"]
这样就更容易将每个数组元素映射到目标数组。

您需要Integer.parseInt()来获取整数值。

找到了将其用作分隔符的方法:

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

我想用它作为我的分隔符:

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

如果(mScanner.hasNext())位于mapArray[i][j]=scanner.nextInt()之前,请将这一行放在前面;可能有效,也可以提供日志07-29 03:29:27.569:ERROR/AndroidRuntime(5933):致命异常:GLThread 10 07-29 03:29:27.569:ERROR/AndroidRuntime(5933):java.util.InputMismatchException 07-29 03:29:27.569:ERROR/AndroidRuntime(5933):at java.util.Scanner.ner.java:1025)07-29 03:29:27.569:ERROR/AndroidRuntime(5933):在java.util.Scanner.nextInt(Scanner.java:1373)07-29 03:29:27.569:ERROR/AndroidRuntime(5933):在java.util.Scanner.nextInt(Scanner.java:1337)您是否尝试过我在上述评论中提到的方法?是的,我尝试过。似乎没有任何变化=/如果(mScanner.hasNext())在mapArray[i][j]=scanner.nextInt()之前,则将这一行放在前面;可能有效,也可以提供日志07-29 03:29:27.569:ERROR/AndroidRuntime(5933):致命异常:GLThread 10 07-29 03:29:27.569:ERROR/AndroidRuntime(5933):java.util.InputMismatchException 07-29 03:29:27.569:ERROR/AndroidRuntime(5933):at java.util.Scanner.ner.java:1025)07-29 03:29:27.569:ERROR/AndroidRuntime(5933):在java.util.Scanner.nextInt(Scanner.java:1373)07-29 03:29:27.569:ERROR/AndroidRuntime(5933):在java.util.Scanner.nextInt(Scanner.java:1337)您是否尝试过我在上述评论中提到的方法?是的,我尝试过。似乎没有什么变化=/文件实际上是:0,0,0,0,0,1,1,1,然后换行并重复。我认为这与新行有关?文件实际上类似于:0,0,0,0,0,1,1,1,然后是新行并重复。我认为这与新行有关?我不熟悉Pattern和Matcher,如果可能的话,我想继续使用我正在使用的。这只是一种基于正则表达式搜索文本模式的简单而强大的方法。我不熟悉Pattern和Matcher,我想继续使用我正在使用的都有可能。这只是一种简单而强大的方法,可以在文本中搜索基于正则表达式的模式。速度有很大差异吗?对不起,我从来没有测试过。但是由于Alex只编译了一次正则表达式,他的代码可能会更快。速度有很大差别吗?对不起,我从来没有测试过。但是由于Alex只编译一次正则表达式,他的代码可能会更快。