java - 编译器输出 IndexOutOfBoundsException

标签 java

ArrayList beds = new ArrayList(49);
public Patient getPatient(int bedNumber) {
    if (beds.get(bedNumber) != null) {
        return (Patient) beds.get(bedNumber);
    } 
    else {
        return null;
    }

}

我遇到了一个问题,我似乎无法让 Java 在方法中输出 null。

假设我将一名患者分配给床位 ArrayList 中的某个项目,然后尝试使用上面创建的 getPatient 方法获取第 11 张床位的患者,但是您不能这样做,因为尚未添加 11 名患者。当我尝试执行此操作而不是 java.lang.IndexOutOfBoundsException 时,如何使其输出 null。

最佳答案

首先,编译器与此无关,因为显示 IndexOutOfBoundsException 的是 JVM。

您应该做的是根据 ArrayList 的大小检查 bedNumber,而不是检查不存在(超出范围)的 ArrayList 项是否为 null。所以做简单的整数数学。

即,

if (bedNumber > 0 && bedNumber < beds.size()) {
    // do your stuff here
} else {
    // myself, I'd throw an exception here, not return null
}

关于java - 编译器输出 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27262851/

相关文章:

java - 如何配置Commons VFS自动检测gz文件

java - 如何创建一个包含原始主键和复合主键作为表复合键的 JoinTable(Spring JPA)?

java - Google App Engine Flex 在运行 Play Framework 应用程序时出现 No X11 DISPLAY variable was set 错误;我在哪里设置这个变量?

java - 使用 Java 和 MimeMessage 发送之前在默认邮件客户端中预览电子邮件

java - 什么是单例的替代品

java - 无法使用 <portlet :actionURL> 调用 portlet 的方法

Java EWS 抛出 NoClassDefFounderror

java - 我们可以将平面文件发送到 IBM MQ 还是必须创建平面文件的字符串表示形式,以便可以将其作为消息发送

java - Oracle 在 Java 中的 RETURNING INTO 用法(JDBC,Prepared Statement)

java - 自动更新 map /集并检查大小