提问人:kinkkelaade 提问时间:12/9/2021 更新时间:12/9/2021 访问量:317
索引出界,尽管没有出界?
Index out of bounds despite not being out of bounds?
问:
我正在制作一个用于功课的 java 程序,您可以在其中添加、移动和删除容器中的内容。我必须使用“添加 100”、“删除 50”等命令。停止命令“lopeta”只有一个单词,但其他命令有两个部分,command 和 int。当我使用 stop 命令时,我得到索引越界错误,但其他一切都有效。我想这是因为停止命令只有单词而没有int,但是如何防止此错误发生?如果我使用“lopeta 0”,它可以工作,但我只想使用“lopeta”。对不起,这些名字是芬兰语的,但我希望你能理解这一点。 这是我的代码
String luettu = lukija.nextLine();
String[] osat = luettu.split(" ");
String komento = osat[0];
int maara = Integer.valueOf(osat[1]);
if(luettu.equals("lopeta")) {
break;
}
if(komento.equals("lisaa")) {
if(maara < 0) {
ensimmainen = ensimmainen + 0;
} else {
ensimmainen = ensimmainen + maara;
}
if(ensimmainen > 100) {
ensimmainen = 100;
}
} else if (komento.equals("siirra")) {
if(maara < 0) {
ensimmainen = ensimmainen + 0;
} if(maara > ensimmainen) {
ensimmainen = 0;
} if (toinen + maara > 100) {
toinen = 100;
} else {
ensimmainen = ensimmainen - maara;
toinen = toinen + maara;
}
} else if (komento.equals("poista")) {
if(maara > toinen) {
toinen = 0;
} else {
toinen = toinen - maara;
}
}
答:
0赞
nps
12/9/2021
#1
String[] osat = luettu.split(" ");
String komento = osat[0];
int maara = Integer.valueOf(osat[1]);
您正在根据空格 (“ ”) 拆分字符串。现在,当有字符串 “lopeta 0” 时,你会得到数组 [“lopeta”,“0”]。当你执行 osat[1] 时,你会得到 “0”,但是当你只有字符串 “lopeta” 并且你拆分字符串时,生成的数组只有 1 个元素 [“lopeta”]。因此,您将获得 ArrayIndexoutOfBoundsException,因为没有第二个元素。
您可以在访问元素之前检查数组的大小,或者如果您对异常有所了解,则可以使用 try, catch 块来处理。
上一个:索引越界,java
评论
if(luettu.equals("lopeta"))
osat