Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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 修改arraylist编码问题中的项目_Java_Netbeans_Arraylist - Fatal编程技术网

Java 修改arraylist编码问题中的项目

Java 修改arraylist编码问题中的项目,java,netbeans,arraylist,Java,Netbeans,Arraylist,我正在尝试更改arraylist中项目的值。我好像没法让它工作。我不知道如何真正问这个问题。代码非常广泛(或者至少在我的书中是这样),所以我无法真正展示所有代码。但是,如果我知道当前索引,如何使其更改ItemName currentIndex.setItemName(newItemName); CurrentIndex是一个int,它告诉我所处的索引,ItemName是arraylist中的字符串。我应该在尝试设置之前获取ItemName吗?像这样的 InventoryItem.getIte

我正在尝试更改arraylist中项目的值。我好像没法让它工作。我不知道如何真正问这个问题。代码非常广泛(或者至少在我的书中是这样),所以我无法真正展示所有代码。但是,如果我知道当前索引,如何使其更改ItemName

 currentIndex.setItemName(newItemName);
CurrentIndex是一个int,它告诉我所处的索引,ItemName是arraylist中的字符串。我应该在尝试设置之前获取ItemName吗?像这样的

InventoryItem.getItemName();
currentIndex.setItemName(newItemName);
这也不起作用

编辑:我被要求显示更多的代码。这是我的动作监听器中弹出的面板

 modifyButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            JTextField xField = new JTextField(15);
            JTextField yField = new JTextField(15);
            JTextField zField = new JTextField(15);

            JPanel myPanel = new JPanel();
            myPanel.add(new JLabel("Item Name:"));
            myPanel.add(xField);

            myPanel.add(Box.createVerticalStrut(15)); // a spacer
            myPanel.add(new JLabel("Number in inventory:"));
            myPanel.add(yField);

            myPanel.add(Box.createVerticalStrut(15)); // a spacer
            myPanel.add(new JLabel("Unit Price:"));
            myPanel.add(zField);
            int result = JOptionPane.showConfirmDialog(null, myPanel,
                    "Please Enter data into all boxes", JOptionPane.OK_CANCEL_OPTION);
            if (result == JOptionPane.OK_OPTION) {

                String newItemName = String.valueOf(xField);
                String text1 = yField.getText();
                String newInventoryAmount = String.valueOf(text1);
                int newAmount = Integer.parseInt(newInventoryAmount);
                String text2 = zField.getText();
                String newUnitPrice = String.valueOf(text2);
                double newPrice = Double.parseDouble(newUnitPrice);
                inventory.get(currentIndex).setItemName(newItemName);
                inventory.get(currentIndex).setInStock(newAmount);
                inventory.get(currentIndex).setUnitPrice(newPrice);


            }
        }

}

);

ìnt
没有方法
setItemName
(或者任何方法,因为它是一个原语,而不是一个对象)

尝试
yourarylist.get(currentIndex.setItemName(newItemName)

它对列表中所需的元素调用
setItemName

编辑:要解决新问题,请替换
String newItemName=String.valueOf(xField)带有

String newItemName = xField.getText();

我相信这就是你想要做的。

ìnt
没有方法
setItemName
(或者任何方法,因为它是原语,而不是对象)

尝试
yourarylist.get(currentIndex.setItemName(newItemName)

它对列表中所需的元素调用
setItemName

编辑:要解决新问题,请替换
String newItemName=String.valueOf(xField)带有

String newItemName = xField.getText();
我相信这就是您想要做的。

list.set(index,newItemName)

,E)

list.set(索引,newItemName)


,E)

我不确定你的ArrayList是什么名字,所以我就叫它ArrayList

试一试

arrayList.get(currentIndex)
调用列表中当前索引处的元素


这允许您使用
.setItemName(newItemName)
更改对象的名称。

我不确定您的ArrayList是什么名称,所以我将其命名为ArrayList

试一试

arrayList.get(currentIndex)
调用列表中当前索引处的元素


这允许您使用
.setItemName(newItemName)
更改对象的名称。

请查看此代码,它完成了我认为您正在尝试的操作

public class Test {

    public static void main(String args[]){

        ArrayList<Employee> myArrayList = new ArrayList<Employee>();

        Employee e1 = new Employee();
        e1.setName("Juan");

        myArrayList.add(e1);

        myArrayList.get(0).setName("Jhon");

        System.out.println(myArrayList.get(0).getName());


    }

}

class Employee {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }



}
公共类测试{
公共静态void main(字符串参数[]){
ArrayList myArrayList=新建ArrayList();
员工e1=新员工();
e1.设定名称(“胡安”);
myArrayList.add(e1);
myArrayList.get(0.setName(“Jhon”);
System.out.println(myArrayList.get(0.getName());
}
}
班级员工{
私有字符串名称;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
}

查看这段代码,它完成了我认为您正在尝试的操作

public class Test {

    public static void main(String args[]){

        ArrayList<Employee> myArrayList = new ArrayList<Employee>();

        Employee e1 = new Employee();
        e1.setName("Juan");

        myArrayList.add(e1);

        myArrayList.get(0).setName("Jhon");

        System.out.println(myArrayList.get(0).getName());


    }

}

class Employee {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }



}
公共类测试{
公共静态void main(字符串参数[]){
ArrayList myArrayList=新建ArrayList();
员工e1=新员工();
e1.设定名称(“胡安”);
myArrayList.add(e1);
myArrayList.get(0.setName(“Jhon”);
System.out.println(myArrayList.get(0.getName());
}
}
班级员工{
私有字符串名称;
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
}


您的
阵列列表的名称是什么?
?我还尝试了类似
inventory.set(itemName=newItemName)的方法但似乎找不到itemName。我认为这是因为它在一个单独的类中?
publicstaticarrarylist inventory=newarraylist()
您的
ArrayList的名称是什么
?我还尝试了类似于
inventory.set(itemName=newItemName)的方法但似乎找不到itemName。我认为这是因为它在一个单独的类中?
publicstaticarrarylist inventory=newarraylist()
set
更改对象引用,在不替换的情况下对列表中的对象进行变异是不好的。但是他说字符串在他的数组列表中,他正在尝试更改它。字符串是不可变的,所以唯一的方法是在列表中设置它。字符串不可变并不意味着不能替换对象中的字符串引用。这就是set所做的。。。。他说他的列表直接包含字符串,所以他没有要修改的对象。没关系,我刚看到他的评论,他确实有一个要设置名称的对象:)
set
更改对象引用,在不替换的情况下对列表中的对象进行变异是不好的。但是他说字符串在他的数组列表中,他正在尝试更改它。字符串是不可变的,所以唯一的方法是在列表中设置它。字符串不可变并不意味着不能替换对象中的字符串引用。这就是set所做的。。。。他说他的列表直接包含字符串,所以他没有要修改的对象。没关系,我刚刚看到他的评论,他确实有一个要设置名称的对象:)这看起来很混乱。也许就叫它arrayList吧。是的,至少给它一个理论上正确的名字。这看起来很混乱。也许就叫它arrayList。是的,至少给它一个理论上正确的名称。这是可行的,但当我看新值时,它会说Item name=javax.awing.JTextField(…并且似乎没有实际改变它。现在就像一个符咒一样工作!谢谢这项工作,但是当我看到新值时,它说Item Name=javax.awing.JTextField(…并且似乎没有实际改变它。现在就像一个符咒一样工作!谢谢