-3
package round1;

import java.util.Scanner;

public class MathewJhon {
    int i = 0;

    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int x = scn.nextInt();
        int y = scn.nextInt();
        int nth = scn.nextInt();
        int a[] = genrate(x, y);
        System.out.println(x + " " + y + " " + nth);

    }

    private static int[] genrate(int x, int y) {
        for(int i=1;i<y;i++){
            int val=(i*(i+1))/2;
             int a[]= new int[y];
              a[i]=val;
        }           
        return a;

    }

}
4

2 回答 2

6

您需要在方法范围内声明您的数组:

private static int[] genrate(int x, int y) {
    int a[] = new int[y];
    for(int i=1; i<y; i++){
        int val = (i*(i+1))/2;
        a[i] = val;
    }           
    return a;
}

当您在循环中声明变量时,它只存在于该循环中。

请注意,您的原始方法每次通过循环创建一个新数组,因此您没有用值填充单个数组(就像您显然想要的那样)。此外,该参数x似乎没有被使用;这可能是另一个错误吗?

于 2013-08-13T18:12:41.240 回答
2

在这种情况下,您的数组范围仅限于for循环。尝试这个:

private static int[] genrate(int x, int y) {
int a[] = new int[y];
for(int i=1;i<y;i++){
    int val=(i*(i+1))/2;
      a[i]=val;
}           
return a;

}

当您在 Java 中的循环或方法内声明任何类型的变量时,无法在该循环或方法之外访问它。

于 2013-08-13T18:12:55.453 回答