【问题标题】:Why do i get the NullPointerException error with my array?为什么我的数组出现 NullPointerException 错误?
【发布时间】:2011-11-21 08:02:53
【问题描述】:

我的程序运行。只是在程序中间它说:

Exception in thread "main" java.lang.NullPointerException
at Example.main(Example.java:33)

这是我的代码:

String [] iArray ;
String i ;
int counter=1 ; counteragain=-1, q;

do {
System.out.print ("\n\nItem Code : ") ;
i = s.next();

if (i.equals ("0") ){
  counter = 0 ;
} else {
  System.out.print ("\nQuantity: ") ;
q = s.nextInt() ;
counteragain++ ;

i = iArray[counteragain];
}
} while (counter!=0) ;

我得到错误的那一行是:

 i = iArray[counteragain];

为什么会出现此错误?我的语法错了吗?但是为什么它运行我的程序呢?

任何帮助将不胜感激。

【问题讨论】:

  • iArray 尚未分配任何值。
  • 什么是s?它从未被声明过。

标签: java arrays nullpointerexception


【解决方案1】:

你没有初始化这个数组。因此它有一个 null 值。 你必须做这样的事情

String[] iArray = new String[numberOfElements];

您确实不需要需要在声明中初始化数组。所以可以先回忆这个numberOfElements,然后再初始化。

iArray = new String[numberOfElements];

【讨论】:

    【解决方案2】:

    String [] iArray ; 永远不会被实例化。所以,最初,iArray 为空。

    当您获取元素 i = iArray[counteragain]; 时,您正在尝试访问未实例化的数组,因此会抛出 NullPointerException

    我不知道你的数组大小是多少,但要取消它,你必须这样做:

    String[] iArray = new String[size];
    

    现在,iArray 将有一个长度为 size 的占位符,但每个元素都将是 null,因为它尚未分配值。即,iArray[0] 将为 null,因为元素 0 处没有值。

    【讨论】:

      【解决方案3】:

      您需要分配数组。 行String [] iArray;只声明了对字符串类型数组的引用,但没有声明 为数组中的对象分配任何空间; 您需要将该行更改为类似

      String[] iArray = new String[size of needed array];
      

      如果你无法预测所需的大小,最好使用像 ArrayList 这样的集合类型

      【讨论】:

        【解决方案4】:

        您的代码不完整,它没有显示 s 是什么(我猜它是一个迭代器)以及它来自哪里。 从您发布的代码中,异常是

        String [] iArray;
        

        你没有初始化 iArray 所以它是空的;您应该发布一个工作方法/类以获得正确的答案。

        【讨论】:

          【解决方案5】:

          iArray = new String[n];,其中niArray 中的元素数。

          应该可以帮你摆脱NullPointerException..

          【讨论】:

            【解决方案6】:

            iArray 永远不会被初始化。所以取消引用的iArray[counteragain] 使用空引用这样做;因此NullPointerException

            【讨论】:

              猜你喜欢
              • 2015-02-07
              • 2019-10-17
              • 2015-06-27
              • 1970-01-01
              • 2012-03-26
              • 1970-01-01
              • 1970-01-01
              • 2010-09-22
              相关资源
              最近更新 更多