私はJavaを初めて使用しています。特に、リストを反復して要素を変更するのは難しいです。私は何十もの似たような質問をしましたが、多くの試みの後には何も働かなかった。 次のコードサンプルでは、例外がスローされます。私はスレッドが1つしかないので、同時スレッドには関係しません。 Netbeansの出力サイス例外がライン5に発生する(このCustomerData顧客= i.next();):全コードのみ要素がTAGIDに一致し、それがない場合は、2を交換しているかどうかをチェックすることになっている別のConcurrentModificationException
CustomerData tempCustomer = new CustomerData("",tagID,0);
tempCustomer.setName(name);
tempCustomer.setSize(size);
for(ListIterator<CustomerData> i = customers.listIterator(); i.hasNext();)
{
CustomerData customer = i.next();
if(customer.getTagID().contains(tagID))
{
Object[] options = {"overwrite", "do not overwrite"};
int n = JOptionPane.showOptionDialog(rootPane,
"TagID already exists. overwrite?",
"?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,
rootPane);
if (n == JOptionPane.YES_OPTION){
i.set(tempCustomer);
}
}
else{
addCustomer();
}
}
値(名前とサイズ)が含まれています。当初はsetName()
とsetSize()
を要素のforループの内側で使用しようとしましたが、それがうまくいかず、他の関連する質問を読んだあと、ループの前に一時オブジェクトに値を割り当て、イテレータのsetメソッドを使って現在の素子。しかし、まだ成功しておらず、例外が5行目以降に来るので、それは決してそれを達成できないように思われます。
ああ!あなたが正しいです。私はいつもif部分を見ていて、関数のelse部分では見ていませんでした。今、私は 'addCustomer()'を 'i.add'に置き換えました。これはうまくいきます。さらに、NetBeansは5行目で例外が発生したと私に混乱させました。私はif-else文全体を間違って数えると思います。 3つの答えはすべて正しく、質問をする前に私が読んだものです。私は論理エラーのアドバイスのためにあなたのものを正しいものとしてマークします。次はそれに乗ります。ありがとうございました! – rbx