【发布时间】:2018-05-11 13:50:25
【问题描述】:
我想将所有值作为 0.0 添加到大小设置为 MAX=5 的 ArrayList 中。我正在使用 for 循环来添加值。当列表超过 MAX 大小时,我想捕获一个越界异常。一条消息将输出列表大小应为 5 的原因。然后它将打印出列表值,即 5“0.0”。 我会通过将 MAX 值更改为 8 来测试它:
try {
for (int i=0; i<8; i++)
myList.add(0.0);
我尝试将 try{} 放在循环中,并将 add() 放在 while 循环之后。输出要么没有捕捉到异常,要么不返回任何东西。我在下面的代码不返回任何内容。 我一定是问错了问题,因为我似乎找不到答案。或者我的逻辑完全错误......我会很感激任何指导!
//This code doesn't return anything
import java.util.ArrayList;
public class Values {
private static final int MAX = 5;
private ArrayList<Double> myList = new ArrayList<Double>(MAX);
public Values() {
try {
for (int i=0; i< MAX; i++) {
myList.add(0.0);
while ( i <0 || i > MAX) {}}
}
catch (IndexOutOfBoundsException e) {
System.out.println(e.getMessage());
System.out.println("ArrayList size allowed at" + MAX);}
for (Double myList: myList)
System.out.println(myList);
}
【问题讨论】:
-
i 无法解析为变量,这意味着您从未声明过 i
-
在你的 for 循环后面添加一些花括号。否则它在下一行的唯一“活动”。一旦你将 while 循环括在花括号内,你的错误就消失了
-
尽管您使用
MAX长度声明了您的列表,并且如果您要添加更多,它会在内部默默地增加它的长度并相应地进行调整。最好的办法是检查MAX并抛出你自己的异常或任何现有的异常。 -
for 循环在 'mylist.add(0.0);' 行之后完成。所以变量'i'在'while'循环中是未知的。尝试正确格式化您的代码,然后您会更容易看到。
标签: java for-loop while-loop try-catch indexoutofboundsexception