длинный массив в Java объявлен сбой инициализации - PullRequest
0 голосов
/ 28 октября 2018

В следующей программе:

public static long Coinsum(int euro) {
    double[] coins= {0,0.01,0.02,0.05,0.1,0.2,0.5,1,2};
    long numberoftimes[][];

    for(int i=0;i<coins.length;i++){
        for(int j=0;j<=euro;j++) {
            if(i==0 &&j==0){
                numberoftimes[i][j]=1;
            }
            else if(i<j){
                numberoftimes[i][j]=numberoftimes[i-1][j]+numberoftimes[i][j-i];
            }
            else {
                numberoftimes[i][j]=numberoftimes[i-1][j];
            }
        }
    }
    return numberoftimes[coins.length-1][euro];
}

numberoftimes показывает предупреждение внутри цикла for for:

Возможно, локальная переменная numberoftimes не инициализирована

что мне делать?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

должно быть long numberoftimes[][] = new long[coins.length][euro+1];

0 голосов
/ 28 октября 2018

Вам нужно new a long[][].Это может быть неровным (но не здесь).Первое измерение - coins.length, а второе - euro + 1.Соглашения об именах Java являются строчными начального camelCase.В любом случае это может выглядеть примерно так:

public static long coinSum(int euro) {
    double[] coins = { 0, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2 };
    long[][] numberoftimes = new long[coins.length][];

    for (int i = 0; i < coins.length; i++) {
        numberoftimes[i] = new long[euro + 1];
        for (int j = 0; j <= euro; j++) {
            if (i == 0 && j == 0) {
                numberoftimes[i][j] = 1;
            } else if (i < j) {
                numberoftimes[i][j] = numberoftimes[i - 1][j] + numberoftimes[i][j - i];
            } else {
                numberoftimes[i][j] = numberoftimes[i - 1][j];
            }
        }
    }
    return numberoftimes[coins.length - 1][euro];
}
...