Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这是通过getText()将值存储到数组中的正确用法吗?_Java_Arrays_Gettext - Fatal编程技术网

Java 这是通过getText()将值存储到数组中的正确用法吗?

Java 这是通过getText()将值存储到数组中的正确用法吗?,java,arrays,gettext,Java,Arrays,Gettext,在Java程序的构造函数中,我有以下内容: 下面是对应的actionPerformed方法,它应该从一些文本字段中获取3个值并将它们存储到数组中: public void actionPerformed(ActionEvent e) { String arg = e.getActionCommand(); if (arg == "Submit") { //enlarge arrays qtyStr = enlargeArray(qtyStr);

在Java程序的构造函数中,我有以下内容:

下面是对应的actionPerformed方法,它应该从一些文本字段中获取3个值并将它们存储到数组中:

public void actionPerformed(ActionEvent e)
{
    String arg = e.getActionCommand();

    if (arg == "Submit")
    {
    //enlarge arrays
    qtyStr = enlargeArray(qtyStr);
    typeStr = enlargeArray(typeStr);
    colorStr = enlargeArray(colorStr);

    //add from textfields into current
    qtyStr[qtyStr.length-1] = qty.getText();
    typeStr[typeStr.length-1] = type.getText();
    colorStr[colorStr.length-1] = color.getText();

    }
}

//method to enlarge an array by 1
public String[] enlargeArray(String[] currentArray)
{
    String[] newArray = new String[currentArray.length + 1];

    for (int i = 0; i<currentArray.length; i++)
    newArray[i] = currentArray[i];

    return newArray;
}
public void actionPerformed(ActionEvent e)
{
字符串arg=e.getActionCommand();
如果(arg==“提交”)
{
//放大阵列
qtyStr=放大阵列(qtyStr);
typeStr=放大数组(typeStr);
colorStr=放大阵列(colorStr);
//将文本字段添加到当前
qtyStr[qtyStr.length-1]=qty.getText();
typeStr[typeStr.length-1]=type.getText();
colorStr[colorStr.length-1]=color.getText();
}
}
//方法将数组放大1
公共字符串[]放大数组(字符串[]当前数组)
{
String[]newArray=新字符串[currentArray.length+1];

对于(inti=0;i您在这里遇到了一个问题:
if(arg==“Submit”)

不要使用
==
来比较字符串。请使用
等于(…)
相等信号案例(…)
方法。请理解,
==
检查两个对象是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这就是这里的问题。因此

if (fu == "bar") {
  // do something
}

或者


另外,为了安全起见,我尽量使用字符串常量,以免被拼写错误绊倒。

这里有个问题:
if(arg==“Submit”)

不要使用
==
来比较字符串。请使用
等于(…)
相等信号案例(…)
方法。请理解,
==
检查两个对象是否相同,这不是您感兴趣的。另一方面,这些方法检查两个字符串是否具有相同顺序的相同字符,这就是这里的问题。因此

if (fu == "bar") {
  // do something
}

或者


此外,为了安全起见,我尽可能使用字符串常量,以免被拼写错误绊倒。

如果您希望以这种方式编写代码,我可能会做两件事: 1) 为下一个可用索引维护每个数组的索引字段,以及 2) 我不建议每次将数组的大小调整1,因为我们当前的代码在数组中运行了2n次(n=数组长度),第一次是初始化数组,第二次是创建新数组

优化此L的两个选项一个是查看Arrays类。它包含这样的方法,在这里可能很有用。您还可以检查数组是否已满,然后将其调整为大于1的数字,以减少额外的工作

例如:

import java.util.Arrays;
class Test{
    private String[] a;
    private int next;

    public Test(int size){
        a = new String[size];
        next = 0;
    }

    public void add(String s){
        if(next == a.length){
           Arrays.copyOf(a, a.length+1);
        }
        a[next] = s;
        next++;
    }
}

最简单的方法是使用ArrayList(或实现java.util.List接口的任何类),正如Jon Skeet前面提到的,它将为您完成所有工作。

如果您希望以这种方式编写代码,我可能会做两件事: 1) 为下一个可用索引维护每个数组的索引字段,以及 2) 我不建议每次将数组的大小调整1,因为我们当前的代码在数组中运行了2n次(n=数组长度),第一次是初始化数组,第二次是创建新数组

优化此L的两个选项一个是查看Arrays类。它包含这样的方法,在这里可能很有用。您还可以检查数组是否已满,然后将其调整为大于1的数字,以减少额外的工作

例如:

import java.util.Arrays;
class Test{
    private String[] a;
    private int next;

    public Test(int size){
        a = new String[size];
        next = 0;
    }

    public void add(String s){
        if(next == a.length){
           Arrays.copyOf(a, a.length+1);
        }
        a[next] = s;
        next++;
    }
}

最简单的方法是使用ArrayList(或实现java.util.List接口的任何类),正如Jon Skeet之前提到的,它将为您完成所有工作。

为什么不使用
ArrayList
?您实际上在做类似的工作,但需要更多的faff(和更多的复制).你为什么不使用
ArrayList
?你实际上在做类似的工作,但要用更多的假货(和更多的复制品)。谢谢,它能工作!另一个引起我注意的问题是ActionCommand的拼写错误…我会继续编码,谢谢大家!@user3648803:这是使用字符串常量的一个很好的理由。谢谢,它能工作!另一个引起我注意的问题是ActionCommand的拼写错误…我会继续编码,谢谢大家@user3648803:这是使用字符串常量的一个强有力的理由。我认为ArrayList对于我来说更好,但我认为它们不能像我需要的那样(至少使用insertString)在文档中打印。我认为ArrayList对于我来说更好,但我认为它们不能像我需要的那样在文档中打印(至少使用insertString)。
import java.util.Arrays;
class Test{
    private String[] a;
    private int next;

    public Test(int size){
        a = new String[size];
        next = 0;
    }

    public void add(String s){
        if(next == a.length){
           Arrays.copyOf(a, a.length+1);
        }
        a[next] = s;
        next++;
    }
}