java - Helsinki MOOC.fi 一直告诉我“IndexOutOfBoundsException:索引:0,大小:0”,但我总是得到想要的输出..?
问题描述
这是我的程序...
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
while (true) {
int number = Integer.valueOf(scanner.nextLine());
if (number <= -1) {
break;
}
list.add(number);
}
int biggest = list.get(0);
for (int i = 0; i <= list.size()-1; i++) {
int small = list.get(i);
if (small > biggest) {
biggest = small;
}
}
System.out.println("The greatest number: " + biggest);
}
它完成了项目要求我做的事情。我只需要遍历 ArrayList 并打印出列表中的最大值。有用!但是,当我提交项目时,我只是得到一个“索引越界异常”。为什么会这样?
解决方案
int number = Integer.parseInt(scanner.nextLine());
用于.parseInt()
从 String 中获取 int 值。不是.valueOf()
在使用原语时。
从文档:
.valueOf()
方法返回一个等于以下值的 Integer 对象:
new Integer(Integer.parseInt(s))
如果输入的第一个数字是-1
,那么list.get(0);
将抛出相同的异常。您需要进行如下检查:
if (list.size() > 0) {
int biggest = list.get(0);
for (int i = 0; i <= list.size()-1; i++) {
int small = list.get(i);
if (small > biggest) {
biggest = small;
}
}
System.out.println("The greatest number: " + biggest);
} else {
// handle case - first number entered was -1
}
推荐阅读
- c++ - 将数据复制到另一个任务
- python - 使用虚拟环境时,jupyter notebook 中使用了哪些模块?
- java - 如何在 Java 中生成内部分离的 XML 签名
- python - 约束中的“或”:docplex
- c# - UnityEvent 没有被调用
- sympy - 如何从 sympy 逻辑对象/表达式中获取所有文字(包括否定文字)?
- javascript - 地图和过滤器的组合不能按预期工作
- variables - 如何将多行结果映射到 SSIS 执行 SQL 任务中的不同变量?
- javascript - Webpack 正在为每个 SVG 文件生成一个捆绑文件
- django - 包含在 urlpatterns 和 404 中