Java 有没有办法通过for循环创建数组元素?

Java 有没有办法通过for循环创建数组元素?,java,arrays,Java,Arrays,所以,我想写一个方法,创建一个包含某个数的所有除数的数组。因此,我创建了一个空数组int[]除数,稍后通过for循环获取它的数字,但它表示该数组尚未初始化。我该怎么办 该方法的输出稍后将用于查找两个数字的最大公约数,因此数组中的数字从最小到最大排序很重要。我知道有一个更简单的解决方案,但我想使用数组,因为我现在想专注于学习这些 public static int[] allDivisors(int number) { int[] divisors; int counter= 0;

所以,我想写一个方法,创建一个包含某个数的所有除数的数组。因此,我创建了一个空数组int[]除数,稍后通过for循环获取它的数字,但它表示该数组尚未初始化。我该怎么办

该方法的输出稍后将用于查找两个数字的最大公约数,因此数组中的数字从最小到最大排序很重要。我知道有一个更简单的解决方案,但我想使用数组,因为我现在想专注于学习这些

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