Hei! Löytyisiköhän täältä apuja aloittelijalle (todella isolla A:lla)? Olen yrittänyt etsiä pari päivää eri lähteistä tietoa, miten oheisen ohjelman saisi toimimaan siten, että kävisi läpi taulukon ja ilmoittaisi, jos lukua ei löydy alkioista? Array listalla osasin tehdä, mutta tämä Olio nyt tuottaa harmaita hiuksia, enkä tajua enää mistään mitään... Apuja? <3
public static void main(String[] args) { Scanner lukija = new Scanner(System.in); int[] taulukko = new int[10]; taulukko[0] = 6; taulukko[1] = 2; taulukko[2] = 8; taulukko[3] = 1; taulukko[4] = 3; taulukko[5] = 0; taulukko[6] = 9; taulukko[7] = 7; System.out.print("Mitä taulukosta etsitään? "); int etsittava = Integer.valueOf(lukija.nextLine()); // Toiminnallisuus int indeksi = 0; while (indeksi < taulukko.length) { int luku = taulukko[indeksi]; if (etsittava == luku) { etsittava = luku; System.out.println("Luku " + etsittava + " löytyy indeksistä " + indeksi + "."); } else { System.out.println("Lukua " + etsittava + " ei löydy."); break; } indeksi = indeksi + 1; } }
Yksi tapa on tehdä boolean muuttuja, jolla osoitetaan luvun löytyminen.
Toisinsanoen vaikkapa näin:
... bool loytyi = false; ...
Sitten käydään läpi taulukko silmukassa ja mikäli luku löytyy, muutetaan boolean arvo:
... loytyi = true; ...
Silmukan jälkeen voidaan sitten todeta että mikäli lukua ei löytynyt, tulostetaan että lukua ei tosiaankaan löytynyt:
... while(silmukka){ ... } if(!loytyi){ // (!loytyi) on sama kuin (loytyi == false) tulostellaan... } ...
Ehkä tehtävässä pitää löytymistapauksessa sanoa mistä indeksistä löytyi niin maka78 ohjetta voisi sen perusteella tarkentaa
ennen silmukkaa asetetaan:
int löytyiIndeksistä = -1; // -1 == ei löytynyt
ja silmukassa
... löytyiIndeksistä = indeksi; // silmukan löytymiskohdan sen hetkinen indeksi break; ...
Silmukan jälkeen sitten
if (löytyiIndeksistä != -1) { print("löytyi indeksistä: " +löytyiIndeksistä); }
Ihanaa! Hei iso kiitos teille molemmille! Yritinkin tuota totuusarvoa jollain tavalla jo räpeltää, mutta olen todellakin aloittelija... niin enhän saanut sitä toimimaan oikein. Mut nyt tavaan näitä teidän ohjeita ja jatkan sitkeästi yrittämistä - kiitos <3
Kannatti jatkaa yrittämistä:
"Mitä etsitään? 22
Lukua 22 ei löydy.
------------------------------------------------------------------------
BUILD SUCCESS"
Eikä mennyt edes kauaa :D Mut kiitos teidän, nyt ymmärrän tuota silmukan käyttöäkin paremmin - Kiitos <3
Entä mitä tapahtuu kun etsitään lukua
taulukko[4] = 3;
?
Tässäpä vielä for-silmukalla näperrettynä:
... //Luetaan käyttäjän syöte int-muuttujaan 'etsittava' int etsittava = Integer.valueOf(lukija.nextLine()); //Alustetaan int muuttuja 'index' -1:eksi int index = -1; //Käydään 'taulukko' niminen taulukko läpi for-silmukassa for(int i = 0;i<taulukko.length;i++){ //Jos muuttujan 'etsittävä' arvo on sama kuin taulukon valitussa alkiossa.. if(etsittava == taulukko[i]){ //niin muutetaan 'index'-muuttujan arvo vastaamaan taulukon //valitun alkion indeksiä ja poistutaan for-silmukasta. index = i; break; } } //jos muuttuja 'index' arvo on suurempi kuin -1 if(index>-1){ //niin tulostetaan luku ja mikä oli taulukon indexi System.out.println("Luku " + etsittava + " löytyy indeksistä " + index + "."); } else { //muussa tapauksessa lukua ei löytynyt. System.out.println("Lukua " + etsittava + " ei löydy."); } ...
_Pete_ kirjoitti:
Entä mitä tapahtuu kun etsitään lukua
taulukko[4] = 3;
?
Tapahtuu seuraavaa:
"Mitä etsitään? 3
Luku 3 löytyy indeksistä 4.
------------------------------------------------------------------------
BUILD SUCCESS"
En tiedä kyllä yhtään oliko tuo mun räpellys lopulta järkevin/selkein/oikea tapa...mutta tavasin noita sun ohjeita kuin raamattua/tein tarvittavat muutokset ja ainakin ohjelma toimi tuossa tehtävässä :)
Lisäys:
maka78 kirjoitti:
Tässäpä vielä for-silmukalla näperrettynä:
Wau! Mulla menee kyllä vielä välillä aivot ihan solmuun, kun yritän ymmärtää miten monia eri tapoja voi olla ratkaista eri toiminnallisuuksia. Ja en ymmärrä vielä yhtään siitä, mikä olisi aina paras kussakin tilanteessa. Ehkä opin vielä tässä matkan varrella :)
Kiitos!
kyllä ymmärsit hyvin!
Yleensä paras on selkein / yksinkertaisin, paitsi erikoistilanteissa joissa selkein vaihtoehto aiheuttaa ongelman.
Grez kirjoitti:
Yleensä paras on selkein / yksinkertaisin, paitsi erikoistilanteissa joissa selkein vaihtoehto aiheuttaa ongelman.
Osuit kyllä naulan kantaan :) Olisihan minun tullut tuokin tietää :D Ehkä ensimmäinen teoria-asia minkä opiskelin. Ja kuten huomaatte: Aivot on "vähän" solmussa :D Niin koukuttavaa puhaa, että ei malttaisi taukoa pitää. Nyt on kyllä ehkä syytä - Ihana sivusto, kiitos kaikille <3
Aihe on jo aika vanha, joten et voi enää vastata siihen.