(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;
}
我知道很多地方是错的,但我试过了。这是我知道我需要做的两件事,但我不知道怎么做:
我知道我必须先计算有多少个数字可以被一个数字整除,才能知道要创建的数组有多大。问题是我知道如何找到有多少个数字,但我不知道如何在方法中使用该数字自己创建一个数组。
之后我需要找到可以除以另一个数字的那些数字是什么。这个我可以做到,但我不知道如何将这些结果添加到一个数组中以便稍后打印出来。
这些是我到目前为止所知道的。请帮忙。谢谢。
您可以尝试将它们添加到 ArrayList
中,因为 ArrayList
您不需要事先知道尺寸,您可以边做边添加它们,也用于你的样子你不必看所有 1
到 n-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
有效,但如果您受限于数组,这就是方法。
我想创建一个方法来查找可被数字整除的数字,并将这些数字添加到数组中,以便稍后在调用该方法时打印出来。
我做到了这一点:
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;
}
我知道很多地方是错的,但我试过了。这是我知道我需要做的两件事,但我不知道怎么做:
我知道我必须先计算有多少个数字可以被一个数字整除,才能知道要创建的数组有多大。问题是我知道如何找到有多少个数字,但我不知道如何在方法中使用该数字自己创建一个数组。
之后我需要找到可以除以另一个数字的那些数字是什么。这个我可以做到,但我不知道如何将这些结果添加到一个数组中以便稍后打印出来。
这些是我到目前为止所知道的。请帮忙。谢谢。
您可以尝试将它们添加到 ArrayList
中,因为 ArrayList
您不需要事先知道尺寸,您可以边做边添加它们,也用于你的样子你不必看所有 1
到 n-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
有效,但如果您受限于数组,这就是方法。