Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[JAVA] Problem z wyszukiwaniem tablic poprzez for.

#1
[JAVA] Problem z wyszukiwaniem tablic poprzez for.
Cześć!

Mam dosyć dziwny, przynajmniej dla mnie, problem. Napisałem kod który przeszukuje parę tablic używając for.
Kod:
byte[][] tablica = {{12, 13, 14, 15, 55, 66, 100},
{1, 3, 88, 22, 33, 44, 12},
{3, 30, 40, 60, 22, 33, 1}};
       byte szukam = 12;
       byte x;
       byte y = 0;
       boolean tester = false;
      
       for (x = 0; x<tablica.length; x++)
       {
           for (y = 0; y < tablica[x].length; y++)
           {
               if (szukam == tablica[x][y])
               {
                   tester = true;
                   break;
               }
           }
       }
       if (tester)
       {
           System.out.println("Wartość - " + szukam + " - znalazłem w:" + x + ", " + y);
       }else
           System.out.println("Brak wyszukiwanej wartości.");
Problem jest taki - jeżeli wartość której szukam znajduje się w drugiej lub trzeciej tablicy - program bez problemu podaje prawidłową pozycję. Natomiast gdy liczba znajduje się w tablicy pierwszej -program nie potrafi podać prawidłowej pozycji, tak jak w podanym kodzie. Co robię nie tak albo czy to coś czego nie rozumiem? Chciałbym by program podawał prawidłowo pozycję niezależnie od tablicy w której się znajduje.
Pomagam zwiększyć widoczność w sieci. Wesoły

Każdy dzień bez forum to dzień stracony.
 System operacyjny: windows_seven Przeglądarka: chrome
#2
RE: [JAVA] Problem z wyszukiwaniem tablic poprzez for.
Problemów jest kilka. Po pierwsze program wcale nie działa dobrze - zwraca prawidłowy wynik tylko wtedy, gdy rozwiązanie jest w ostatniej tablicy i to nie do końca, ponieważ zwraca x=3, a powinien 2. Błędne jest użycie break - ono działa tylko na wewnętrznego for, zatem ten większy nadal działa. Jeżeli chcesz pisać w ten sposób to musisz dodać jeszcze jeden warunek:
Kod:
        byte[][] tablica = { { 112, 13, 14, 15, 55, 66, 100 },
                { 1, 3, 88, 22, 33, 44, 12 }, { 112, 30, 40, 60, 22, 33, 1 } };
        byte szukam = 12;
        byte x;
        byte y = 0;
        boolean tester = false;

        for (x = 0; x < tablica.length; x++) {
            for (y = 0; y < tablica[x].length; y++) {
                if (szukam == tablica[x][y]) {
                    tester = true;
                    break;
                }
            }
            if (tester) {
                break;
            }
        }
        if (tester) {
            System.out.println("Wartość - " + szukam + " - znalazłem w:" + x
                    + ", " + y);
        } else
            System.out.println("Brak wyszukiwanej wartości.");
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: [JAVA] Problem z wyszukiwaniem tablic poprzez for.
Sprawdziłem kod który podałeś i coś jest (chyba) nie tak. Szukam wartości "12". Po skopiowaniu Twojego źródła otrzymuję wynik - 1, 6. 6 się zgadza, ale na pierwszym miejscu masz liczbę 112 - nie wiem czemu jest wykrywana jako 12. Do tego kiedy zmieniłem 112 z pierwszych miejsc tablicy na wcześniejsze 12 oraz 1 otrzymuję wynik - 0, 0.

Dobra - rozgryzłem. Dokumentacja o tym nie wspominała ale wyszło na to, źe X oznacza numer tablicy a Y miejsce w tej tablicy. Wcześniej uważałem, że wskazuje miejsca w tablicach gdzie dana liczba została znaleziona. Głupi błąd ale dzięki Tobie czegoś się nauczyłem, dzięki wielkie. Krzywy Na marginesie - mój kod jest ze strony oracle, zmieniłem tylko liczby w tablicach. Trzeba uważniej je analizować.
Pomagam zwiększyć widoczność w sieci. Wesoły

Każdy dzień bez forum to dzień stracony.
 System operacyjny: windows_seven Przeglądarka: chrome
Programy: Polecane / Nowe / Inne




Podobne wątki ([JAVA] Problem z wyszukiwaniem tablic poprzez for.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Java początkujący problem ze zrozumieniem kodu MatL70 6 7702 20.06.2017, 12:24
Ostatni post: MatL70
  Wskażniki do tablic dwuelementowych soul1648 1 6718 25.03.2017, 16:13
Ostatni post: Szachista
  [C++] Scalanie dwóch posortowanych tablic soul1648 5 8751 16.03.2017, 20:09
Ostatni post: Szachista

Skocz do:


Wybrane wątki ([JAVA] Problem z wyszukiwaniem tablic poprzez for.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [VBA] Tworzenie nowego arkusza z danymi z TextBox'a Pioro 4 11046 19.06.2018 23:24
Ostatni post: broda99
  Potwierdzenie na maila po wysłaniu pliku coci 0 10141 13.06.2018 20:37
Ostatni post: coci
  Pieczętowanie Archiwum Jar - Po co? wanhelsing 3 10722 19.05.2018 20:55
Ostatni post: koneton
  Wyszukiwarka w spawnerze nie reaguje na polskie znaki kazik666 0 10493 16.05.2018 12:04
Ostatni post: kazik666
  BASH symulator silnika dawswi1 3 10689 13.05.2018 10:43
Ostatni post: Szachista
  Autohotkey automatyczny zapis TheProgson 0 10264 07.05.2018 21:27
Ostatni post: TheProgson
  VBA Pobieranie wybranych plików z danymi julietta03 1 10582 04.05.2018 08:25
Ostatni post: broda99
  [VBA] Przenoszenie danych między formularzami Pioro 4 11032 23.04.2018 11:48
Ostatni post: broda99
  Skrypt, który szuka i zamienia armen10 2 10519 23.04.2018 10:04
Ostatni post: armen10
  Liniowa regresja w Pythonie a budowanie modelu Trojan3000 2 10622 16.04.2018 13:26
Ostatni post: Trojan3000
  Początki z bashem - jak napisać skrypty: wysłanie maila i kalkulator? Kristov81 4 14442 21.03.2018 18:32
Ostatni post: Szachista
Ściana Zadanie cmd.... Yanke$ 2 11553 16.03.2018 17:20
Ostatni post: FireBytes
  Poszukuj kogoś do pomocy FireBytes 0 9977 16.03.2018 16:58
Ostatni post: FireBytes
  Program liczący liczby pierwsze Mersenne'a raistin 2 10322 12.03.2018 12:51
Ostatni post: Szachista
  Wykres Funkcji w Javie wanhelsing 4 10872 17.02.2018 22:27
Ostatni post: wanhelsing