【问题标题】:Exception copying string into an array of strings from a Java Form using getText()使用 getText() 将字符串从 Java 表单复制到字符串数组中的异常
【发布时间】:2014-04-01 17:49:20
【问题描述】:

我收到了一个NullPointerException,其中包含以下 Java 代码:

static String s[],t[],temp;

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    s[0]=jTextField2.getText();
    jTextField3.setText("The input string is: "+s[0]);
    temp=jTextField1.getText();
    t=temp.split(" ");
    jTextField3.setText("The input string is: "+t[0]);
}

此代码一直给我java.lang.NullPointerException。我的代码有什么问题???

我也试过这种方式:

static String s[],t[],temp;

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    temp=jTextField2.getText();
    s[0]=temp;
    jTextField3.setText("The input string is: "+s[0]);
    temp=jTextField1.getText();
    //t=temp.split(" ");
    //jTextField3.setText("The input string is: "+t[0]);
}

而且jTextField3.setText("The input string is: "+t); 也不适用于声明为静态字符串 t 的 t。在文本字段中,它再次显示了一些异常。

【问题讨论】:

    标签: java string forms swing nullpointerexception


    【解决方案1】:

    您正在声明您的数组,但您从未初始化它,因此当您尝试访问数组项时,例如s[0],由于s 为空,因此将抛出 NPE。

    您需要将数组分配给数组对象,如下所示:

    // SIZE is an int constant that is the size of the array you desire.
    String[] s = new String[SIZE];
    

    旁注:

    • 您可能不应该将这些变量中的任何一个声明为静态,这样做表明可以改进程序设计。
    • 我想知道您是否使用并行数组来保存数据。如果是这样,请考虑创建一个新类来保存数据信息的每一“行”,然后使用此类类的 ArrayList。

    编辑 你说:

    但我最初不知道尺寸。我可以使用 String[temp.length];???

    你可以将你的数组初始化为一个大的尺寸,一个可能比你预期需要的更大,但是更好的解决方案是根本不使用数组(直接),而是使用表现出某种类型的 ArrayLists -of 可变大小的类似数组。

    【讨论】:

      【解决方案2】:
      int LENGTH = 10;
      static String s[] = new String[LENGTH];
      static String t[] = new String[LENGTH];
      

      【讨论】:

      • Oracle 文档是一个很好的起点docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
      • 静态字符串 s[]=new String[20],t[][]=new String[20][20],temp;这成功了。对于我想要的案例,没有人会提供超过 20 个字符串作为输入。非常感谢..!!!
      • 顺便说一句,正如其他用户所说,请查看 ArrayList 类。您会发现它非常易于使用,而且它节省了您使用比使用标准数组所需的更多内存。
      猜你喜欢
      • 2013-09-15
      • 2013-02-26
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多