import java.util.Scanner;
public class Test{
public static int[] calculateFactors(int n){
int[] array = new int[n];
for(int i = 0; i<=n;i++){
if(n%i==0){
return array[i];
}
}
}
public static void main(String[] args){
System.out.println("Please enter the number you want to find the factors for:");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
System.out.println(calculateFactors(n));
}
}
我不明白为什么会收到错误。我正在尝试编写用户输入数字的代码,程序将返回此数字的所有因子。 任何人都可以告诉我为什么当我无法使用相应的i因子返回数组时。
谢谢
答案 0 :(得分:12)
查看您的代码(为了清晰起见,添加了空格):
public static int[] calculateFactors(int n) {
int[] array = new int[n];
for(int i = 0; i <= n; i++) {
if(n % i == 0) {
return array[i];
}
}
}
有两个问题:
int
,但您的方法声明它返回int[]
n
为-1,会发生什么?它永远不会经历循环,所以它永远不会返回。更一般地,编译器将假设(几乎)任何if
条件可能为假。现在,至于如何解决它 - 给定方法名称,听起来你真的做想要返回所有因素......所以你不应该尽快回来我找到了第一个。我会在List<Integer>
而不是数组中收集因子。将return
语句转换为add
调用,然后在循环结束时返回。哦,您可能希望以i
为1而不是0 ...
所有这些都是针对这个特殊问题的。更一般地说,您应该查看编译器提供给您的错误。他们应该为您自己提供所需的所有信息。既然您做了解问题,请再次阅读这些消息并尝试找出阻止您理解之前的消息。你能自己解决一下,还是错过了一些重要的概念?
答案 1 :(得分:2)
在到达循环结束时返回
答案 2 :(得分:1)
两个错误 第一:
for(int i = 0; i<=n;i++){
应该是
for(int i = 0; i<n;i++){
第二
for(int i = 0; i<=n;i++){
if(n%i==0){
return array[i];
}
}
应该是
for(int i = 0; i<=n;i++){
if(n%i==0){
return array[i];
}
}
return something
答案 3 :(得分:0)
问题在于声明:
return array[i];
这是无效的,因为你试图返回数组的索引,这是一个int,你的方法签名返回int []改为this
return array;