Java 当使用for循环添加到阵列时,它将替换它之前阵列中的所有内容
因此,我正在为我的cs II类做一个简单的项目,我们需要使用JOptionPane来获取所有信息,而不是扫描仪。我不知道这是不是给我造成了这个问题,或者是因为我们必须使用4个类,一个main类、一个GUI类、一个controller类和一个model类 这是我的模型类中的代码,我试图创建一个包含用户通过GUI类中的JOPtionPane输入的所有位置的数组。所以它通过控制器进入模型类 所以在代码中,它要求一个位置,然后我想把它添加到数组中。我完全理解为什么这段代码用最后输入的位置替换数组的每个元素,因为它每次得到一个位置时都运行完整的for循环。我只是不知道如何解决这个问题!任何帮助都是值得的。谢谢Java 当使用for循环添加到阵列时,它将替换它之前阵列中的所有内容,java,arrays,for-loop,joptionpane,Java,Arrays,For Loop,Joptionpane,因此,我正在为我的cs II类做一个简单的项目,我们需要使用JOptionPane来获取所有信息,而不是扫描仪。我不知道这是不是给我造成了这个问题,或者是因为我们必须使用4个类,一个main类、一个GUI类、一个controller类和一个model类 这是我的模型类中的代码,我试图创建一个包含用户通过GUI类中的JOPtionPane输入的所有位置的数组。所以它通过控制器进入模型类 所以在代码中,它要求一个位置,然后我想把它添加到数组中。我完全理解为什么这段代码用最后输入的位置替换数组的每个元
public void addLocation(String location) {
for (int i = 0; i < locations.length; i++) {
locations[i] = location;
}
}
public void addLocation(字符串位置){
对于(int i=0;i
如果是,位置[i]不会返回位置i处的字符,而是返回字符串,该字符串被解释为true,因为它被设置为1,因此函数只会设置位置[1]=“位置”
您需要首先使用以下方法将字符串转换为字符数组:
String str = "lcoation";
char[] charArray = str.toCharArray();
然后在该数组上循环。您可以按照以下方式执行操作:
//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++;
}
因此在代码中它要求一个位置,然后我想将它添加到数组中。我完全理解为什么这段代码用最后输入的位置替换数组的每个元素,主要是您限制自己使用数组,在这种情况下,您可以尝试以下操作
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起将自身设置回零)。希望有帮助???我会使用
列表而不是数组,这样您就可以随意添加和删除元素,并调用locations.toArray(新字符串)[locations.size()])
每当需要数组时。什么意思“每次获得一个位置时,它都在运行完整的for循环”?您是代码编写者,您编写了一个for循环来替换数组中的每个元素。如果您不想替换数组中的每个元素,请不要编写一个for循环来替换数组中的每个元素。如果没有适当的索引检查,当迭代器++超过或等于ls locations.lengthTrue,在最后一个程序中,您需要对C进行适当的索引检查。虽然我也希望首先使用列表而不是数组。这里的一些人有复制粘贴解决方案的想法,因此当复制粘贴的代码在他们这方运行时,会发生灾难。因此,我们确保我们的解决方案不是打开的e对执行复制粘贴的代码后发生的灾难负责:),并且您对java.util.Listthank的使用是非常正确的。谢谢您,这很有帮助。我想我要做的是在iterator++之前添加一个if语句,并说if(iterator