(Java) 查找可被数字整除并添加到要打印的数组的方法

(Java) Method to find number divisible by a number and add to array to be print out

我想创建一个方法来查找可被数字整除的数字,并将这些数字添加到数组中,以便稍后在调用该方法时打印出来。

我做到了这一点:

int [] divider(int n) {
    int [] result = new int[20];
    for (int i = 0; i <= n; i++) {
       if (n%i == 0)
          result = result[i];
    }
    return result;
}

我知道很多地方是错的,但我试过了。这是我知道我需要做的两件事,但我不知道怎么做:

  1. 我知道我必须先计算有多少个数字可以被一个数字整除,才能知道要创建的数组有多大。问题是我知道如何找到有多少个数字,但我不知道如何在方法中使用该数字自己创建一个数组。

  2. 之后我需要找到可以除以另一个数字的那些数字是什么。这个我可以做到,但我不知道如何将这些结果添加到一个数组中以便稍后打印出来。

这些是我到目前为止所知道的。请帮忙。谢谢。

您可以尝试将它们添加到 ArrayList 中,因为 ArrayList 您不需要事先知道尺寸,您可以边做边添加它们,也用于你的样子你不必看所有 1n-1 个数字。

如果你不能改变你的方法的定义,那么你可以像下面那样把它们添加到一个新的数组中。如果您可以更改定义,那么您可以简单地 return 结果。

int[] divider(int n) {
    ArrayList<Integer> result=new ArrayList<Integer>();
    for (int i = 1; i <= n/2; i++) { //only check for half of the numbers
       if (n%i == 0)
          result = result[i];
    }
    int[] a=new int[result.size()];
    for(int i=0;i<a.length;i++){
       a[i]=results.get(i);
    }
    return a;
}

这是测试:

public static void main(String[] args) {
    Integer [] arr = divider(60);
    for (Integer integer : arr) {
        System.out.println(integer);
    }
}

您应该使用 "n/2" 结束循环,因为 "n" 的第二个最大分频器必须是 "n/2":即:60 的第二个最大分频器是 30。并且 "i"必须以“1”开头,因为你不能用“0”除以数字。循环结束后,我们应该将 "n" 添加到列表中,因为 "n" 的最大分频器是 "n".

static Integer [] divider(int n) {
    List<Integer> resultList = new ArrayList<Integer>();
    Integer [] result;
    for (int i = 1; i <= n/2; i++) {
       if (n%i == 0)
           resultList.add(i);
    }
    resultList.add(n);
    result = resultList.toArray(new Integer[resultList.size()]);

    return result;
}

这可以在没有 List 的情况下完成,因为您可以限制除以输入的数字的数量 n。最简单的方法是说 n 不能有超过 n 个分隔符。一个更聪明的界限是 sqrt(n)。您想要数组的大小吗?在这里:sqrt(n) + 1+1 是一个完美的正方形)。

在方法的最后,您可以统计实际的分隔符数量并将它们复制到一个新的数组中。此方法可能不如使用 List 有效,但如果您受限于数组,这就是方法。