【问题标题】:NullPointerException at int array in Java ProjectJava项目中int数组的NullPointerException
【发布时间】:2013-11-07 21:34:31
【问题描述】:

我正在创建一个方法,它将 int n 作为参数,将先前初始化的 String 转换为整数数组,将 1 添加到每个索引 n 次,通过强制转换从 int 数组的每个增量创建一个新的 char 数组,然后将所有 n char 数组转换为新字符串并打印到屏幕上。

Netbeans 在我当前的项目中抛出 NullPointerException,我不知道为什么。有人可以解释为什么会出现这个错误以及我应该做些什么来解决它?

相关类:https://www.dropbox.com/s/gv02i1traulg8kp/StringShifter.java
包含 Main 方法的类:https://www.dropbox.com/s/ymon96ovv4c2lnf/CodeBreaker.java

错误:
线程“main”中的异常 java.lang.NullPointerException
在 Project5.StringShifter.shift(StringShifter.java:35)
在 Project5.CodeBreaker.main(CodeBreaker.java:18 )

【问题讨论】:

  • 请将相关代码放在问题中,而不是放在 Dropbox 中。你应该把它编辑成一个简短的但是完整的程序来演示这个问题。
  • 你应该接受一个答案。

标签: java arrays nullpointerexception


【解决方案1】:

你的问题在这里:

    int[] a = null; 
    char[] b = null; 
    int r = 0; 

    for (int i = 0; i <= text.length(); i++) { 
        a[i] = text.charAt(i); 
    }

a 设置为指向 null,然后您尝试为 a[i] 分配一个值(当前在内存中没有位置),这将给您一个 NullPointer。

【讨论】:

    【解决方案2】:

    看看你的代码:

    int[] a = null; 
    char[] b = null; 
    int r = 0; 
    
    for (int i = 0; i <= text.length(); i++) { 
        a[i] = text.charAt(i); 
    }
    

    a 为 null - 您已将其明确设置为 null。所以

    a[i] = text.charAt(i);
    

    将失败并显示NullReferenceException - 它是必然的。您需要初始化 a 以引用数组,例如

    int[] a = new int[text.length()];
    

    需要改变你的上限——当itext.length()时,text.charAt(i)会抛出一个异常。所以你想要:

    int[] a = new int[text.length()];
    for (int i = 0; i < text.length(); i++) { 
        a[i] = text.charAt(i); 
    }
    

    目前还不清楚你为什么想要int[]。使用起来会更简单:

    char[] chars = text.toCharArray();
    for (int i = 0; i < text.length(); i++) {
        chars[i] = (char) (chars[i] + 1);
    }
    

    还有:

    • 重复循环多次没有意义 - 只需添加 n 而不是 1
    • 每次迭代都创建一个新字符串是没有意义的;就在最后做吧

    【讨论】:

    • int[] a = new int[a.length()]; 你的代码很混乱。我想你的意思是你之前写的……a[i] = new int[text.length()];
    • @MirroredFate:是的,只是一个错字 - 已修复。 (虽然它只是分配给a,而不是a[i] - 那位以前也错了!)
    • 糟糕,我也错过了那个。 the loop loop multiple 也是错字吗?因为如果不是我真的很困惑。
    • @MirroredFate:是的。再次,固定。
    【解决方案3】:

    您定义了int[] a = null,但从不初始化它。

    当您尝试在a[i] = text.charAt(i); 中访问它时,您会得到NullPointerException

    你可以解决你添加a初始化的问题:

    int[] a = new int[text.length];
    

    【讨论】:

    • int[] a = null; 初始化它 - 它将变量初始化为null
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 2013-02-16
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2022-01-20
    相关资源
    最近更新 更多