2. Napisz program, w którym utworzona zostanie 12-elementowa tablica zawierająca liczby typu int.
Wypełnij ją dowolnymi wartościami. Następnie program ma sprawdzić czy w tablicy znajduje się
element równy wartości przypisanej do jakiejś zdefiniowanej początkowo w programie zmiennej.
Przykładowy wynik programu dla tablicy o elementach: {2, 4, 9, 11, 3, 5, 2, 6, 8, 1, 3, 8}
W tablicy znaleziono poszukiwaną wartość: 6
int tab[] = {2,4,9,11,3,5,2,6,8,1,3,8};
int liczba = 7;
System.out.println("Szukana liczba: "+liczba);
System.out.print("Przykladowy wynik programu dla tablicy o elementach: {");
for(int i = 0; i < 12; i++)
{
if(i == 11)
{
System.out.print(tab[i]+"}");
}
else
{
System.out.print(tab[i]+",");
}
}
for(int j = 0; j < 12; j++)
{
if(tab[j] == liczba)
{
System.out.print("\nW tablicy znaleziono poszukiwana wartosc: "+liczba+" na "+(j+1)+" miejscu");
}
else
{
System.out.print("\nW tablicy nie znaleziono poszukiwanej wartosci: "+liczba);
}
}
1 - Co zmienić w drugiej pętli for (nie używając booleana), aby "W tablicy nie znaleziono poszukiwanej wartosci: " wypisało się tylko 1 raz (o ile to możliwe bez booleana)?
2 - Dlaczego jak zmieniam w kodzie z odpowiedzi if(znalazlem) na if(znalazlem=true) to program już nie działa tak jak powinien? Co w takim razie znaczy samo if(znalazlem)?
1 - Hmm, no raczej trzeba by to zrobić w podobny sposób jak w odpowiedziach, tzn. To wypisanie na ekran informacji o braku znalezienia liczby wywalić poza pętlę. Tzn. pewnie możnaby to zostawić w pętli i robić jakieś dziwne kombinacje, ale to by już było bardzo nienaturalne podejście.
2 - W innym temacie się już do tego odniosłem, ale w każdym razie błąd, który tu popełniasz to użycie pojedynczego znaku =, bo to wtedy nie jest operator przyrównania stron do siebie, tylko operator przypisania. Więc on nie sprawdza czy lewa strona jest równa prawej. Ale jeśli dasz już ==, to będzie ok, tzn zapisanie if(znalazlem) to bedzie to samo co if(znalazlem == true).