**Kesalahannya ada pada baris ini: **

if ((board[r + vertical[movenumber]]) <= 8 && board[r + vertical[movenumber]] >= 1)

**Seluruh metode jika diperlukan: **

public void tour()
{

    int starter = 1;

    int start1 = (int)(Math.random() * 8 - 1) + 1;
    int start2 = (int)(Math.random() * 8 - 1) + 1;

    board[start1][start2] = starter;

    int r = start1;
    int c = start2;

    for (int count = 0; count < board[row].length; count++)
    {

        numb[count] = count;

    }

    for (int runs = 2; runs <= 64; runs++)
    {

        int movenumber = (int)(Math.random() * 8 - 1) + 1;

        if ((board[r + vertical[movenumber]]) <= 8 && board[r + vertical[movenumber]] >= 1)
        {

            if (board[r + vertical[movenumber]][c + horizontal[movenumber]] == 0)
            {

                board[r + vertical[movenumber]][c + horizontal[movenumber]] = runs;

                // System.out.println(r + "," + c);

                r = r + vertical[movenumber];
                c = c + horizontal[movenumber];

            }

        }

    }

}
0
Kush 18 Maret 2020, 00:43

1 menjawab

Jawaban Terbaik

Kesalahannya cukup spesifik - Anda mencoba membandingkan larik dengan int. Ekspresi board[r + vertical[movenumber]] adalah larik (atau int[], khususnya), karena papan Anda adalah int[][]. Untuk menjadikannya int, Anda perlu menambahkan indeks kedua, seperti yang Anda lakukan di baris berikut: board[r + vertical[movenumber]][c + horizontal[movenumber]].

Dan dari sekilas melihat kodenya, saya pikir seharusnya r + vertical[movenumber] <= 8 sebagai gantinya.

1
Dmitry Pisklov 17 Maret 2020, 21:52