首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.in多行输入,StringIndexOutOfBoundsException?

System.in多行输入,StringIndexOutOfBoundsException?
EN

Stack Overflow用户
提问于 2015-07-05 06:06:59
回答 1查看 38关注 0票数 0

我正试图扫描一个多行输入,以便插入到一个2D数组中,但是我得到了一个超出范围的异常。

代码语言:javascript
复制
int width = 2;
int height = 2;
Scanner input = new Scanner(System.in);
String theInput = input.nextLine().replace("\n", "").replace("\r", "");
char[][] arr = new char[width][height];
for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        arr[j][i] = theInput.charAt((width*i)+j);
    }
}

当提示输入时,我输入以下内容:

代码语言:javascript
复制
AB
CD
//inputted as is

产生误差的

代码语言:javascript
复制
java.lang.StringIndexOutOfBoundsException: String index out of range: 2

这里发生了什么事?我正在删除换行符,因此应该将其解析为ABCD。相反,输入AB\nCD甚至没有将正确的值插入到arr (它看起来是{A,B,\,n})。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-05 06:08:45

input.nextLine()只读取一行,没有\n。因此,它只返回"AB“。您对.replace("\n", "").replace("\r", "")的调用没有任何效果。

在得到所需的所有输入之前,您可能应该多次调用input.nextLine

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31227594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档