繁体   English   中英

如何通过单击按钮而无需重置计数器的方法来创建一个在阵列中存储大量名称/数字的程序?

[英]How can I create a program that stores a numerous amount of names/numbers in an array by clicking a button without the method resetting my counter?

public void actionPerformed(ActionEvent e)
{
  int clicked = 0;
 if(arg == "Enter")
 {
     clicked++;
 }

 if (clicked == 0)
{
names[0] = nameField.getText();
numbers[0] = numberField.getText();
}

if( clicked == 1)
{
names[1] = nameField.getText();
numbers[1] = numberField.getText();
}

 if(arg == "Print")
 {
   String name = nameField.getText();
   String number = numberField.getText();
   JOptionPane.showMessageDialog(null,names[0] + numbers[0] + names[1] + numbers[1] + numbers[2] + names[2],"Info",JOptionPane.INFORMATION_MESSAGE);
 }

我的程序必须使用多个名称和数字,并且能够将它们输入到数组中。 输入所有数据后,必须能够进行打印。 我在Enter方法下遇到麻烦,因为它每次都会继续重置,而不是保持不变。 它只允许我打印最后键入的姓名/号码,而不是保存所有内容。 我不确定如何解决此问题,在此感谢您的任何建议。

您可以先将被int clicked移出此函数。

现在,每次调用actionPerformed函数时,将其clicked都重置为0,因为在开始时将其设置为0。

public void actionPerformed(ActionEvent e)
{
    int clicked = 0;   //HERE is your problem
    if(arg == "Enter");
    ...

使它成为类的变量而不是函数应该有所帮助。

编辑:您可以做这样的事情:

int clicked = 0 
public void actionPerformed(ActionEvent e)
{
    if(arg == "Enter"){
         names[clicked] = nameField.getText();
         numbers[clicked] = numberField.getText();
         clicked++;
    }

如前所述,您还可以使用List ,因为如果您不知道需要多大的数组,它可以节省问题。

List<String> names = new ArrayList<String>();
List<String> numbers = new ArrayList<String>();

并在使用中

    if(arg == "Enter"){
         names.add(nameField.getText());
         numbers.add(numberField.getText());
    }

除了数组,还可以使用ArrayList ,它将允许您添加元素而不必提供索引。

不必付出太多,就像这样:

ArrayList<String> names = new ArrayList<String>();
...
names.add("Johnny"); // Adds to the end of the list
names.add("Frank");

这样,您无需保留“点击”计数。

您可以使用.get(i)来获取索引i处的元素。 或者只使用for每个循环遍历整个列表:

for(String name : names) { // i.e. for each 'name' in 'names'
    System.out.println(name);
    // Or do something else with 'name'
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM