Java 中的数组方法
Array Methods in Java
我正在尝试编写一种方法,使我能够将数字添加到数组中。如果我输入一些 execpt 0 它将是数组的第一个数字。下一个(0 除外)将是第二个数字。当我输入 0 时,程序将结束。
例如 ; 1,2,3,4,5,0 将显示 1,2,3,4,5 但当我输入它时,我得到 0,5,5,5,5。你能帮忙吗?
这里是更新版本,没有错误。
import java.util.*;
public class test
{
public static int[] addToArray(int[] bag, int value)
{
int i;
for(i = 0; i <= bag.length - 1; i++)
{
bag[i] = value;
if(bag[i] == 0)
{
return bag;
}
}
return bag;
}
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int[] bag = new int[5];
int i, value;
i = 0;
System.out.println("Enter the values : ");
do
{
value = scan.nextInt();
addToArray(bag, value);
}
while(bag[i] != 0);
System.out.println(Arrays.toString(bag));
}
}
您的 addToArray
方法每次调用时都会替换整个数组。这就是 for 循环正在做的事情
for(i = 0; i <= bag.length - 1; i++) {
bag[i] = value;
...
}
当您输入 0 时,此代码:
bag[i] = value
if(bag[i] == 0) {
return bag;
}
会设置bag[0] = 0
然后if
会成功然后return包。
你需要的是找到你应该在数组的哪个位置添加这个值
public static int findNextEmptyPosition(bag) { .... }
...
int nextPosition = findNextEmptyPosition(bag);
bag[nextPosition] = value;
...
//check is the value is zero and stop your while loop.
好的。我解决了。问题是在重新定义整个数组的每个循环中,所以它都会打印我在 0 之前输入的最后一个数字。谢谢大家向我展示这个问题。我通过向该方法添加另一个参数来解决。索引参数"i"。现在,在循环中不会从零开始。它将从它停止的地方开始,这样我就可以定义空数组而无需重新定义以前的数组。谢谢大家的帮助。
import java.util.*;
public class test
{
public static int[] addToArray(int[] bag, int value, int i)
{
int j;
for(j = i; j <= bag.length - 1; j++)
{
bag[j] = value;
if(bag[j] == 0)
{
for(; j <= bag.length - 1; j++)
bag[j] = 0;
return bag;
}
}
return bag;
}
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int[] bag = new int[5];
int i, value;
i = 0;
System.out.println("Enter the values : ");
do
{
value = scan.nextInt();
addToArray(bag, value, i);
i++;
}
while(value != 0);
System.out.println(Arrays.toString(bag));
}
}
我正在尝试编写一种方法,使我能够将数字添加到数组中。如果我输入一些 execpt 0 它将是数组的第一个数字。下一个(0 除外)将是第二个数字。当我输入 0 时,程序将结束。 例如 ; 1,2,3,4,5,0 将显示 1,2,3,4,5 但当我输入它时,我得到 0,5,5,5,5。你能帮忙吗?
这里是更新版本,没有错误。
import java.util.*;
public class test
{
public static int[] addToArray(int[] bag, int value)
{
int i;
for(i = 0; i <= bag.length - 1; i++)
{
bag[i] = value;
if(bag[i] == 0)
{
return bag;
}
}
return bag;
}
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int[] bag = new int[5];
int i, value;
i = 0;
System.out.println("Enter the values : ");
do
{
value = scan.nextInt();
addToArray(bag, value);
}
while(bag[i] != 0);
System.out.println(Arrays.toString(bag));
}
}
您的 addToArray
方法每次调用时都会替换整个数组。这就是 for 循环正在做的事情
for(i = 0; i <= bag.length - 1; i++) {
bag[i] = value;
...
}
当您输入 0 时,此代码:
bag[i] = value
if(bag[i] == 0) {
return bag;
}
会设置bag[0] = 0
然后if
会成功然后return包。
你需要的是找到你应该在数组的哪个位置添加这个值
public static int findNextEmptyPosition(bag) { .... }
...
int nextPosition = findNextEmptyPosition(bag);
bag[nextPosition] = value;
...
//check is the value is zero and stop your while loop.
好的。我解决了。问题是在重新定义整个数组的每个循环中,所以它都会打印我在 0 之前输入的最后一个数字。谢谢大家向我展示这个问题。我通过向该方法添加另一个参数来解决。索引参数"i"。现在,在循环中不会从零开始。它将从它停止的地方开始,这样我就可以定义空数组而无需重新定义以前的数组。谢谢大家的帮助。
import java.util.*;
public class test
{
public static int[] addToArray(int[] bag, int value, int i)
{
int j;
for(j = i; j <= bag.length - 1; j++)
{
bag[j] = value;
if(bag[j] == 0)
{
for(; j <= bag.length - 1; j++)
bag[j] = 0;
return bag;
}
}
return bag;
}
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int[] bag = new int[5];
int i, value;
i = 0;
System.out.println("Enter the values : ");
do
{
value = scan.nextInt();
addToArray(bag, value, i);
i++;
}
while(value != 0);
System.out.println(Arrays.toString(bag));
}
}