当使用for循环添加到数组时,它将替换数组中的所有内容

时间:2017-02-19 22:43:33

标签: java arrays for-loop joptionpane

所以我正在为我的cs II类做一个简单的项目,我们需要使用JOptionPane来获取所有的信息,而不是扫描仪。我不知道这是否对我造成了这个问题,或者是因为我们必须使用4个类,主类,GUI类,控制器类和模型类。

这是我的模型类中的代码,我试图创建一个数组,其中包含用户通过GUI类中的JOPtionPane输入的所有位置。因此它通过控制器进入模型类。

所以在代码中它要求一个位置,然后我想将它添加到数组中。我完全理解为什么这个代码用输入的最后一个位置替换数组的每个元素,因为它每次获取一个位置时都在运行完整的for循环。我只是不知道如何解决这个问题!任何帮助都会被提升。感谢

public void addLocation(String location) {
    for (int i = 0; i < locations.length; i++) {
        locations[i] = location;
    }
}

4 个答案:

答案 0 :(得分:0)

它实际上,locations [i]没有返回地址i的字符,它返回字符串,由于它被设置,它被解释为真,因此它被解释为1,因此你的函数只设置位置[1] = “位置”。

您需要首先使用以下内容将字符串转换为字符数组:

String str = "lcoation"; 
char[] charArray = str.toCharArray();

然后循环遍历该数组。

答案 1 :(得分:0)

您可以采取以下措施:

//iterator attribute to keep track of current index
private int iterator = 0;

public void addLocation(String location) {
    //insert our location at the index indicated by our iterator
    locations[iterator] = location;

    //increment our iterator so we use the next position on the next function call
    iterator++;
}

答案 2 :(得分:0)

所以在代码中它要求一个位置,然后我想将它添加到数组中。我完全理解为什么这个代码用输入的最后一个位置替换数组的每个元素,主要是你限制自己使用数组,在这种情况下,你可能会尝试像

这样的东西
private int arrayIndexCounter = 0; // make sure this is global variable

public void addLocation(String location)
{
   locations[arrayIndexCounter] = location;
   arrayIndexCounter = (arrayIndexCounter + 1) % locations.length;
}

语句 arrayIndexCounter =(arrayIndexCounter + 1)%locations.length 确保您永远不会超出数组的范围并保持在数组大小的限制范围内(从开始到结束) locations.length独占,因为如果arrayIndexCounter == locations.length,则您的arrayIndexCounter将自身设置回零,因为n%n == 0)。希望有帮助??

答案 3 :(得分:0)

我会使用List<String>而不是数组,以便您可以随意添加和删除元素,并在需要数组时调用locations.toArray(new String[locations.size()])