gpt4 book ai didi

Java 数组被覆盖

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:32 27 4
gpt4 key购买 nike

嘿,我是新来的,如果我在帖子中搞砸了,我深表歉意。无论如何,我遇到的问题必须处理数组,我想做的基本上是使用 String[] 数组来填充我的表单并将其显示在屏幕上,然后让 getForm() 函数返回一个 String[],其中包含表单的标题和 text[i] 中的信息。这一切都很好,直到我使用我添加的按钮来调用 getForm() 函数并且我更改为不同的形式(createForm() 附加到 ListListener)和所有标签显示为 getForm() 函数中返回的内容。我很确定这与我使用数组的方式有关,但我认为在我选择另一个通过 createForm() 函数的列表项后它们会恢复正常再次重置阵列,所以我不确定发生了什么。

谢谢

我在下面也附上了我所指内容的屏幕截图。

http://www.majhost.com/gallery/adc90/afsd/error.png

class Form extends JPanel
{
//Arrays for the forms
private String[] com = {"Communication","ICAO","Type","Frequency"};
private String[] fuel = {"Fuel","ICAO","Type"};
private String[] runway = {"Runway","ICAO","Number","Type","Length"};
private String[] airplane = {"Airplane","Make","Model","Type","Fuel Capacity", "Fuel Burn Rate", "Air Speed"};
private String[] airport = {"Airplane","ICAO","Name","Longitude","Latitude","crFreq","crType", "Fuel Type"};

//Declare variables
private JTextField[] text;
private String[] formReturn;
private String[] formArray;
private JButton submit,clear;

public Form()
{
createForm("Airplane");
}

public void createForm(String choice)
{
removeAll();
if(choice.equals("Communication"))
{
formArray = com;
}
else if(choice.equals("Fuel"))
{
formArray = fuel;
}
else if(choice.equals("Airplane"))
{
formArray = airplane;
}
else if(choice.equals("Airport"))
{
formArray = airport;
}
else if(choice.equals("Runway"))
{
formArray = runway;
}


int l = formArray.length + 1;
text = new JTextField[l];

//Layout info
GridLayout grid = new GridLayout(l,2);
grid.setHgap(0);
setLayout(grid);
//Set label
add(new JLabel(formArray[0]));
add(new JLabel(""));
for(int i = 1; i < formArray.length; ++i)
{
add(new JLabel(formArray[i]));
add(text[i] = new JTextField(20));
}

//Add in the buttons and the actionlisteners
submit = new JButton("Create");
clear = new JButton("Delete");
add(clear);
clear.addActionListener(new Button());
add(submit);
submit.addActionListener(new Button());
updateUI();
}
//Get form info
//This works so far
public String[] getForm()
{
formReturn = formArray;
formReturn[0] = formArray[0];
for(int i = 1; i < formReturn.length; i++)
formReturn[i] = text[i].getText();
return formReturn;
}
//Clear form
public void clearForm()
{
for(int i = 1; i < formArray.length; i++)
text[i].setText("");
}
}

最佳答案

public String[] getForm()
{
formReturn = formArray; /* (0) */
formReturn[0] = formArray[0];
for(int i = 1; i < formReturn.length; i++)
formReturn[i] = text[i].getText(); /* (1) */
return formReturn;
}

请看第 (1) 行:您修改指向标签文本的 formReturn 数组。 formReturn -> formArray -> com.

要修复它,只需在 (0) 处创建新的字符串数组:

formReturn = new String[formArray.length];

关于Java 数组被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10370027/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com