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],则不会收到任何错误。