Java 有没有办法通过for循环创建数组元素?
所以,我想写一个方法,创建一个包含某个数的所有除数的数组。因此,我创建了一个空数组int[]除数,稍后通过for循环获取它的数字,但它表示该数组尚未初始化。我该怎么办 该方法的输出稍后将用于查找两个数字的最大公约数,因此数组中的数字从最小到最大排序很重要。我知道有一个更简单的解决方案,但我想使用数组,因为我现在想专注于学习这些Java 有没有办法通过for循环创建数组元素?,java,arrays,Java,Arrays,所以,我想写一个方法,创建一个包含某个数的所有除数的数组。因此,我创建了一个空数组int[]除数,稍后通过for循环获取它的数字,但它表示该数组尚未初始化。我该怎么办 该方法的输出稍后将用于查找两个数字的最大公约数,因此数组中的数字从最小到最大排序很重要。我知道有一个更简单的解决方案,但我想使用数组,因为我现在想专注于学习这些 public static int[] allDivisors(int number) { int[] divisors; int counter= 0;
public static int[] allDivisors(int number) {
int[] divisors;
int counter= 0;
for (int i = 0; i <= number; i++) {
if(number % i == 0) {
divisors[counter]= i;
counter++;
}
}
return divisors;
}
我在网上找不到任何解决问题的正确方法,所以我希望有人能在这里帮助我。我所需要的是一种向数组中添加特定元素的方法,在这种情况下,我无法预先定义特定数字的所有除数。提前感谢您的回答 对于这种情况,数组不是合适的数据结构,因为在使用它之前,需要使用大小整数对它进行初始化。 但是你不知道你将在数组中存储多少项,对吗? 因此,必须使用如下ArrayList:
public static ArrayList<Integer> allDivisors(int number) {
ArrayList<Integer> divisors = new ArrayList<>();
for (int i = 1; i <= number; i++) {
if(number % i == 0) {
divisors.add(i);
}
}
return divisors;
}
到
要避免稍后在中被0除,请执行以下操作:
number % i
此外,您不需要计数器。
您可以在代码中调用此方法:
int number = 30;
ArrayList<Integer> list = allDivisors(number);
System.out.println("The divisors of " + number + " are:");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
如果您严格希望使用数组执行此操作,请尝试对程序进行以下更改
public static int[] allDivisors(int number) {
int[] divisors = new int[number]; // Have to initialize the array
int counter= 0;
for (int i = 1; i <= number; i++) { // i should start from 1; not from zero. Otherwise you get ArithmeticException (divide by zero)
if(number % i == 0) {
divisors[counter]= i;
counter++;
}
}
int[] trimmedDivisors = new int[counter];
System.arraycopy(divisors, 0, trimmedDivisors, 0, counter);
return trimmedDivisors;
}
在java中,在使用数组之前,必须对其进行初始化
public static int[] allDivisors(int number) {
int[] divisors = new int[number];
int counter= 0;
for (int i = 0; i <= number; i++) {
if(number % i == 0) {
divisors[counter]= i;
counter++;
}
}
Arrays.sort(divisors);
return divisors;
}
可能的重复需要调用new int[size],其中size是所需数组的长度。嘿,duffymo,谢谢你的回答!问题是,我不知道这个数字之前有多少个除数,所以我不能定义一个特定的长度。使用列表而不是数组,然后转换为数组。嘿,谢谢你的回答!看起来这真的可以工作,我现在唯一的问题是我的Java不知道什么是ArrayList。可能是我的Java版本还不支持这种数据类型吗?我使用JDK 8是为了学校的目的,所以我可能需要一个更新的版本,对吗?没有任何情况下Java不知道ArrayList是什么。您使用的是什么ide?@ElectrifyingOnyx您导入了java.util.ArrayList;?嗯,上面说无法解析符号“ArrayList”,我应该更具体一点,抱歉。我正在使用IntelliJ IDEA。如果您正在使用IntelliJ,请将光标放在ArrayList上,然后按Alt+Enter。
The divisors of 30 are:
1 2 3 5 6 10 15 30
public static int[] allDivisors(int number) {
int[] divisors = new int[number]; // Have to initialize the array
int counter= 0;
for (int i = 1; i <= number; i++) { // i should start from 1; not from zero. Otherwise you get ArithmeticException (divide by zero)
if(number % i == 0) {
divisors[counter]= i;
counter++;
}
}
int[] trimmedDivisors = new int[counter];
System.arraycopy(divisors, 0, trimmedDivisors, 0, counter);
return trimmedDivisors;
}
public static int[] allDivisors(int number) {
int[] divisors = new int[number];
int counter= 0;
for (int i = 0; i <= number; i++) {
if(number % i == 0) {
divisors[counter]= i;
counter++;
}
}
Arrays.sort(divisors);
return divisors;
}