-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 に答える