lzy_aiyy 2024-08-24 12:01 采纳率: 33.3%
浏览 2
已结题

Java考试系统问题

在做一个简单的考试模拟系统,发现应该显示20道题最后只显示了19道,到第20道的时候就报错了。有没有哪位牛人知道这是要怎么改啊。


```java
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index 20 out of bounds for length 20
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
    at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
    at java.base/java.util.Objects.checkIndex(Objects.java:359)
    at java.base/java.util.ArrayList.get(ArrayList.java:427)
    at Dmo01/view.ChooseJFrame.showQuestion(ChooseJFrame.java:270)
    at Dmo01/view.ChooseJFrame$6.actionPerformed(ChooseJFrame.java:231)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
    at java.desktop/java.awt.Component.processEvent(Component.java:6391)
    at java.desktop/java.awt.Container.processEvent(Container.java:2266)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)


  • 写回答

1条回答 默认 最新

  • 吃不了席 2024-08-24 12:03
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据你提供的代码,问题出在 ChooseJFrame.java 文件的第 270 行。报错信息显示 IndexOutOfBoundsException,意味着你在尝试访问一个超出范围的索引。具体来说,是在第 20 个元素(索引为 19)时出现了问题。

    要解决这个问题,你需要检查第 270 行的代码,确保在访问列表或数组时不会超出其长度。你可以在访问之前检查索引是否在有效范围内,或者捕获 IndexOutOfBoundsException 异常并进行处理。

    以下是一个简单的示例,展示了如何在访问列表元素之前检查索引:

    
    import java.util.ArrayList;
    
    public class ChooseJFrame {
        private ArrayList<String> questions;
    
        public ChooseJFrame() {
            questions = new ArrayList<>();
            // 添加问题到列表中
        }
    
        public void showQuestion(int index) {
            if (index >= 0 && index < questions.size()) {
                String question = questions.get(index);
                // 显示问题
            } else {
                System.out.println("索引超出范围");
            }
        }
    
        public static void main(String[] args) {
            ChooseJFrame frame = new ChooseJFrame();
            // 添加问题到列表中
            frame.showQuestion(20); // 尝试显示第 21 个问题(索引为 20)
        }
    }
    
    

    在这个示例中,我们在访问 questions 列表之前检查了索引是否在有效范围内。如果索引超出范围,我们会输出一条错误信息,而不是抛出异常。你可以根据实际需求修改这个示例。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月1日
  • 已采纳回答 8月24日
  • 创建了问题 8月24日