我想创建一个方法来找到一个可被数字整除的数字,并将这些数字添加到一个数组中,以便稍后在调用该方法时打印出来。
我做到了这一点:
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;
}
我知道很多方面都错了,但我试过了。这是我知道我需要做的两件事,但我不知道如何:
我知道我计算了一个数字可以被数字整除的数量,以便知道要创建多大的数组。问题是我知道如何找到有多少数字,但我不知道如何使用该数字在方法中自行创建数组。
之后我需要找到它可以除以另一个数字的那些数字。我可以这样做,但我不知道如何将这些结果添加到数组中以便以后打印出来。
这些是我直到现在所知道的。请帮忙。谢谢。
答案 0 :(得分:1)
以下是测试:
public static void main(String[] args) {
Integer [] arr = divider(60);
for (Integer integer : arr) {
System.out.println(integer);
}
}
你应该用&#34; n / 2&#34;完成你的循环。因为&#34; n&#34;的第二个最大分频器必须是&#34; n / 2&#34;:即:第二个最大分频器60是30和&#34; i&#34;必须以&#34; 1&#34;因为你不能用&#34; 0&#34;来划分数字。循环完成后,我们应该添加&#34; n&#34;进入列表因为&#34; n&#34;的最大分隔符是&#34; n&#34;。
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;
}
答案 1 :(得分:0)
您可以尝试将它们添加到ArrayList
,而ArrayList
您不需要事先知道尺寸,您可以随身携带它们,也可以看看您无需查看所有1
到n-1
个数字。
如果您无法更改方法的定义,那么您可以将它们添加到新数组中。如果你可以改变定义,那么你可以简单地返回结果。
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;
}
答案 2 :(得分:0)
这可以在没有List
的情况下完成,因为您可以绑定分隔输入n
的数字的数量。最简单的方法是说n
不能超过n
个分隔符。一个更聪明的界限是sqrt(n)
。你想要一个大小的阵列?这是:sqrt(n) + 1
(+1
表示完美的正方形)。
在方法结束时,您可以计算实际的分隔数并将其复制到新数组中。此方法可能效率低于使用List
,但如果仅限于数组,则可以采用此方法。