Sprawdź, czy tablica zawiera dwie liczby

0

Kochani stanąłem na jakby się wydawało prostym zadaniu. Napisz program, który odczytuje nieposortowaną tablicę liczb całkowitych i dwóch liczb n i m. Program musi sprawdzić, czy n i m występują obok siebie w tablicy (w dowolnej kolejności).
Pierwszy wiersz zawiera rozmiar tablicy.
Drugi wiersz zawiera elementy tablicy.
Trzeci wiersz zawiera dwie liczby całkowite ni m.
Wszystkie liczby w tym samym wierszu są oddzielone znakiem spacji.
Input 1:
3
1 3 2
2 3
Sample Output 1:
true

tutaj mój kod:

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int len = scanner.nextInt();
        int[] tab = new int[len];

        for (int i = 0; i < len; i++) {
            tab[i] = scanner.nextInt();
        }
        boolean found = false;
        int n = scanner.nextInt();
        int m = scanner.nextInt();

        for (int i : tab)
            if (n == tab[i] && m == tab[i - 1]) {
                found = true;
                break;
            }
        if (found)
            System.out.println(true);
        else
            System.out.println(false);
    }
}

Po wpisaniu wszystkich danych wyskakuje poza indeks.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at Main.main(Main.java:19)

5
for (int i : tab)
            if (n == tab[i] && m == tab[i - 1]) {
                found = true;
                break;
            }

To co masz w forze to konkretna liczba, a potem traktujesz to jako indeks tablicy.

Np for przechodzi po liczbach, 3,5,8,7. A potem wpisując tab[i-1] otrzymujesz coś ala tab[8-1], a takiego indeksu może nie być ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1