Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Taulukon läpikäyminen?

Sivun loppuun

idieH [11.12.2019 09:56:15]

#

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;
        }
    }

maka78 [11.12.2019 10:25:30]

#

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...
}
...

_Pete_ [11.12.2019 10:33:55]

#

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ä);
}

idieH [11.12.2019 10:41:59]

#

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

idieH [11.12.2019 12:59:52]

#

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

_Pete_ [12.12.2019 07:54:49]

#

Entä mitä tapahtuu kun etsitään lukua

taulukko[4] = 3;

?

maka78 [12.12.2019 10:50:08]

#

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.");

}
...

idieH [12.12.2019 12:02:04]

#

_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!

_Pete_ [12.12.2019 12:16:33]

#

kyllä ymmärsit hyvin!

Grez [12.12.2019 12:43:17]

#

Yleensä paras on selkein / yksinkertaisin, paitsi erikoistilanteissa joissa selkein vaihtoehto aiheuttaa ongelman.

idieH [12.12.2019 13:10:45]

#

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


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta