2017-02-19 21 views
0

所以我做了我的CS II类简单的项目,我们需要使用的JOptionPane获得所有的出信息,而不是扫描仪。我不知道这是否对我造成这个问题,或者是因为我们必须使用4个类,一个主类,一个GUI类,一个控制器类和一个模型类。当添加到阵列与一个for循环,它在数组中前替换所有它

这是在我的模型类的代码,我试图去让所有的位置阵列,用户通过JOptionPane的在GUI类进入。所以它通过控制器进入模型类。

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

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

你是什么意思“_it_每次运行完整的循环,它得到一个位置”?你是代码编写者,并且你编写了一个替换数组中每个元素的for循环。如果您不想替换数组中的每个元素,请不要编写替换数组中每个元素的for循环。 –

回答

0

OFC它,[我]没有在的地方,我返回字符位置,它返回的字符串,因为它的设置这被解释为真,这被解释为1,那么你的函数只是套位置[1] =“位置”。

您需要将您的字符串转换成先用这样的字符数组:

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

然后遍历数组。

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++; 
} 
+0

如果没有进行正确的索引检查,当** iterator ++ **超过或等于** locations.length时,这样的代码会与ArrayIndexOutOfBoundsException分开。** – ShayHaned

+0

确实,在最终的程序中,您希望对c进行适当的索引检查。虽然我也希望首先使用List来代替数组。 – 5tingr4y

+0

有些人对复制粘贴解决方案有一定的想法,所以当复制粘贴代码运行时会发生灾难。所以我们确保我们的解决方案不是对执行Copy-Pasted代码后发生的灾难负责:),并且您对使用java.util是否正确无误。列表 – ShayHaned

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 ==位置.length,你的arrayIndexCounter将自己设置为零,因为n%n == 0)。希望有所帮助?

0

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

相关问题