更新Java ArrayList中的值
我不太确定这个问题的标题,提前道歉。我目前在Bidderray中存储了一个值,比如说50。我希望能够通过输入文本字段的任何给定数字来增加50 如果我想在现有50的基础上再加10,它将返回60。目前,当我添加10时,50被10取代,而不是将两者相加。我理解我的代码为什么要这样做,但还没有找到任何教程或提示我应该做什么 代码如下:更新Java ArrayList中的值,java,arraylist,add,Java,Arraylist,Add,我不太确定这个问题的标题,提前道歉。我目前在Bidderray中存储了一个值,比如说50。我希望能够通过输入文本字段的任何给定数字来增加50 如果我想在现有50的基础上再加10,它将返回60。目前,当我添加10时,50被10取代,而不是将两者相加。我理解我的代码为什么要这样做,但还没有找到任何教程或提示我应该做什么 代码如下: package abc; import java.awt.*; public class Funds extends javax.swing.JFrame {
package abc;
import java.awt.*;
public class Funds extends javax.swing.JFrame {
int i = 0;
Bidder bidbal = new Bidder();
/** Creates new form Funds */
public Funds() {
initComponents();
}
private void addActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int f = 0;
boolean validEntries = true;
try{
f = Integer.parseInt(amount.getText());
Bidder.BidderArray.get(i).setRegFee(f);
} catch (Exception error) {
validEntries = false;
amount.setBackground(Color.red);
}
if (validEntries) {
Bidder.exportBidder();
Home home = new Home();
home.setVisible(true);
this.dispose();
}
}
}
你实际上没有添加任何内容
显然只是将某个值设置为f
,您必须获取当前值,添加到该值,然后将其放回。但这只是一个猜测,因为我们没有足够的实际代码来知道您做错了什么。您实际上没有添加任何内容
f = Integer.parseInt(amount.getText());
Bidder.BidderArray.get(i).setRegFee(f);
显然只是将某个值设置为f
,您必须获取当前值,添加到该值,然后将其放回。但这只是一个猜测,因为我们没有足够的实际代码来知道您做错了什么
f = Integer.parseInt(amount.getText());
Bidder.BidderArray.get(i).setRegFee(f);
在这里,您似乎正在获取用户的输入(f
),只需将数组的元素值设置为它。听起来您想要做的是在将元素的值设置为新的组合值之前,将该输入(f
)和数组的元素现有值合并(读取:添加)它们
在伪代码中,您正在执行以下操作:
f := get user's input
setValue(f)
您需要做的是:
f := get user's input
g := get current value
setValue(f + g)
在这里,您似乎正在获取用户的输入(f
),只需将数组的元素值设置为它。听起来您想要做的是在将元素的值设置为新的组合值之前,将该输入(f
)和数组的元素现有值合并(读取:添加)它们
在伪代码中,您正在执行以下操作:
f := get user's input
setValue(f)
您需要做的是:
f := get user's input
g := get current value
setValue(f + g)
您必须将其添加到旧值中:
//Add old to new (Unless you have a different method set for get like
//getRegFee (Not sure how bidder is implemented))
Bidder.BidderArray.get(i).setRegFee(Bidder.BidderArray.get(i) + f);
您必须将其添加到旧值中:
//Add old to new (Unless you have a different method set for get like
//getRegFee (Not sure how bidder is implemented))
Bidder.BidderArray.get(i).setRegFee(Bidder.BidderArray.get(i) + f);
您必须获取当前费用,添加值,然后设置费用:
f = Integer.parseInt(amount.getText());
Bidder.BidderArray.get(i).setRegFee( f + Bidder.BidderArray.get(i).getRegFee() );
或者您可以添加一个新方法,即投标人
类,该类会增加费用:
class Bidder
{
//...
public void addToRegFee( int amount )
{
this.regFee += amount;
}
}
f = Integer.parseInt(amount.getText());
Bidder.BidderArray.get(i).addToRegFee( f );
您必须获取当前费用,添加值,然后设置费用:
f = Integer.parseInt(amount.getText());
Bidder.BidderArray.get(i).setRegFee( f + Bidder.BidderArray.get(i).getRegFee() );
或者您可以添加一个新方法,即投标人
类,该类会增加费用:
class Bidder
{
//...
public void addToRegFee( int amount )
{
this.regFee += amount;
}
}
f = Integer.parseInt(amount.getText());
Bidder.BidderArray.get(i).addToRegFee( f );
我不知道什么是投标人
,但您的问题的一个可能原因是,当您将这10个元素添加到ArrayList时,实际上是在将引用更改为新的ArrayList,然后将这10个元素添加到新列表中。@NESPowerGlove是的,我知道这就是我目前正在做的,如何在投标人阵列中现有的50个基础上增加10个?目的是增加用户拥有的令牌数量。token total会在Home classMore中显示更多问题和对您只知道的内容的引用!任何人都应该如何回答关于您未发布的代码的问题?我不知道什么是投标人
,但您的问题的一个可能原因是,当您将10个元素添加到ArrayList时,实际上您正在将引用更改为新的ArrayList,然后将10个元素添加到新列表中。@NESPowerGlove是的,我知道这就是我目前正在做的事情,我如何将10个元素添加到投标人数组中现有的50个元素中?目的是增加用户拥有的令牌数量。token total会在Home classMore中显示更多问题和对您只知道的内容的引用!任何人都应该如何回答关于你没有发布的代码的问题?谢谢@clcto你建议的第一种方法完全按照我的意图工作。很抱歉对你们中的那些了解我的人含糊其辞。我是Java新手,我不完全确定要发布多少代码感谢您@clcto您建议的第一种方法完全符合我的预期。很抱歉对你们中的那些了解我的人含糊其辞。我是Java新手,我不完全确定要发布多少代码