【问题标题】:Java Swing do-while Null Pointer [persisting] ConfusionJava Swing do-while Null Pointer [persisting] 混乱
【发布时间】:2013-09-27 11:21:39
【问题描述】:

尽管有以下证据表明我的阵列确实存在,但我仍继续收到此 NPE: 使用这段代码,我引用了一个二维字符串数组,我随机选择一个元素,即两个子元素中的第一个:

do{
        hold = (oneRay.length);
        pick = random.nextInt(hold);
        System.out.println("called(); has been called - oneRay.length = 
" + oneRay.length + "oneRay[0].length " + oneRay[pick].length);
    }while("".equals(oneRay[pick][0]));
    area.setText(oneRay[pick][0]);

从控制台,我收到发生 NPE 的错误 - 这是怎么回事,当我的 Random 对象初始化时,由于我的 println 检查点,我可以清楚地看到数组已满,因此存在:

called(); has been called - oneRay.length = 15oneRay[0].length2
called(); has been called - oneRay.length = 15oneRay[0].length2
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at wbh.SwingImplementation.called(SwingImplementation.java:105)

尽管我试图解决这个问题,但我从昨天开始就一直遇到这个问题 - 我的数组显然在复制,那么这个 NullPointer 是什么? 感谢所有拥有并希望能帮助我的人! 干杯

【问题讨论】:

  • 可以存在引用数组,但包含空引用。可以复制空引用,但不能用于访问对象。
  • 当你初始化一个数组String[] arr = new String[X]时,它包含X个空引用作为它的元素。您必须初始化每个元素。
  • 如果你想调试这个,使用带有固定种子的new Random( seed ) 可以重现错误

标签: java arrays swing nullpointerexception do-while


【解决方案1】:

对于oneRay[0].length,数组的第 0 个元素必须有值。 对于oneRay[pick].length,数组的pickth元素必须有值。

【讨论】:

    猜你喜欢
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2023-04-10
    • 2016-01-10
    • 1970-01-01
    • 2015-05-24
    相关资源
    最近更新 更多