Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 拆分字符串时的ArrayIndexOutof边界_Java_Arrays_Bufferedreader_Indexoutofboundsexception - Fatal编程技术网

Java 拆分字符串时的ArrayIndexOutof边界

Java 拆分字符串时的ArrayIndexOutof边界,java,arrays,bufferedreader,indexoutofboundsexception,Java,Arrays,Bufferedreader,Indexoutofboundsexception,我试图从格式如下的文件中提取信息: 1 test@mail.ca|password|false 但是,在运行以下代码时,我似乎出现了ArrayIndexOutOfBounds错误,我无法确定原因,因为我认为我的拆分应该正常工作。在以“用户”开头的行上获取错误 我在上面发布的方法是名为userFromFile的方法,它期望正则表达式作为参数,|是正则表达式世界中的元字符(特殊字符)。为了将元字符视为普通字符,应使用反斜杠(\ |)对其进行转义 或者只是将其包含在character类中 Strin

我试图从格式如下的文件中提取信息:

1
test@mail.ca|password|false
但是,在运行以下代码时,我似乎出现了
ArrayIndexOutOfBounds
错误,我无法确定原因,因为我认为我的拆分应该正常工作。在以“用户”开头的行上获取错误

我在上面发布的方法是名为
userFromFile

的方法,它期望正则表达式作为参数,
|
是正则表达式世界中的元字符(特殊字符)。为了将元字符视为普通字符,应使用反斜杠(\ |)对其进行转义

或者只是将其包含在character类中

String[] extracted = info.split("[|]");
下面是正则表达式中的元字符:

<([{\^-=$!|]})?*+.>

期望正则表达式作为参数,
|
是正则表达式世界中的元字符(特殊字符)。为了将元字符视为普通字符,应使用反斜杠(\ |)对其进行转义

或者只是将其包含在character类中

String[] extracted = info.split("[|]");
下面是正则表达式中的元字符:

<([{\^-=$!|]})?*+.>

将正则表达式作为参数,使用:

String[] extracted = info.split("\\|");
将正则表达式作为参数,请使用:

String[] extracted = info.split("\\|");
类似的职位。您必须这样使用:

String[] extracted = info.split("\\|");
类似的职位。您必须这样使用:

String[] extracted = info.split("\\|");


实际上,解析字符串的方式没有问题。错误在别处。我会在进入循环之前添加System.out.println(repeats),以确保迭代次数正确。为了进一步调试,我将在调用user.addUsers的行之前打印提取的内容(Arrays.toString(extracted))。如果所有这些看起来都不错,那么问题在于user.addUsers调用。

实际上,解析字符串的方式没有问题。错误在别处。我会在进入循环之前添加System.out.println(repeats),以确保迭代次数正确。为了进一步调试,我将在调用user.addUsers的行之前打印提取的内容(Arrays.toString(extracted))。如果所有这些看起来都很好,那么问题在于user.addUsers调用。

感谢您的回答,但我似乎仍然收到错误提示:(我以前试过使用“,”如果我将拆分应用于
test@mail.ca|密码| false
我收到emailadd,在索引0处,在索引1处,密码为false,在索引2处。你确定这是你的异常源吗?你能用stacktrace更新帖子吗?PremGeneror我已经用stacktrace更新了(我不确定stacktrace是什么,所以如果不是,请告诉我)。@mCode第165行是什么?您确定信息打印出来
test@mail.ca|密码| false
??@PremGenError第165行包含
users.addUser(提取[0],解密密码(提取[1])
。我假设
info
应该输出所提到的字符串,因为
in.readLine()
应该告诉它这样做。也许这是BufferedReader的错误?我应该添加
System.out.println(info);
在出现错误之前不会打印任何内容。感谢您的回答,但我似乎仍然收到错误提示。:(我以前曾尝试使用“,”如果我将拆分应用于
test@mail.ca|密码| false
我收到emailadd,在索引0处,在索引1处,密码为false,在索引2处。你确定这是你的异常源吗?你能用stacktrace更新帖子吗?PremGeneror我已经用stacktrace更新了(我不确定stacktrace是什么,所以如果不是,请告诉我)。@mCode第165行是什么?您确定信息打印出来
test@mail.ca|密码| false
??@PremGenError第165行包含
users.addUser(提取[0],解密密码(提取[1])
。我假设
info
应该输出所提到的字符串,因为
in.readLine()
应该告诉它这样做。也许这是BufferedReader的错误?我应该添加
System.out.println(info);
在出现错误之前不会打印任何内容。感谢您的回答,但我似乎仍然会遇到错误。:(我以前尝试过使用“,”来分隔值。感谢您的回答,但我似乎仍然会遇到错误。:(我以前尝试过使用“,”也要分隔值。感谢您的回答,但我似乎仍然收到错误信息。:(我以前尝试使用“,”分隔值。感谢您的回答,但似乎仍然收到错误信息。:(我以前尝试使用“,”也要分离这些值。我会仔细查看user.addUser行中发生的情况。您没有发布代码,因此我无法在这方面帮助您。但是,如果您将该行取出,只打印LN extracted[0]和extracted[1]您没有收到任何错误。我会仔细查看user.addUser行中发生的情况。您没有发布代码,因此我无法在这方面帮助您。但是,如果您删除该行并仅打印LN extracted[0]和extracted[1],则不会收到任何错误。