1 Taulukoiden käsittely Javalla Mikä taulukko on? Taulukon syntaksi Merkkijonotaulukko Lukutaulukko Taulukon kopiointi 1 Mikä taulukko on? Taulukko on rakenne, minne saadaan talteen usea saman tyyppinen tieto. Taulukon syntaksi Pelkkä esittely ja luonti erikseen tietotyyppi[] taulukonnimi = null; taulukonnimi = new tietotyyppi[koko]; Esittely ja luonti samassa tietotyyppi[] taulukonnimi = new tietotyyppi[koko]; Esittely, luonti ja alustaminen samassa tietotyyppi[] taulukonnimi = {arvo1, arvo2, arvo3;
2 Merkkijonotaulukko Merkkijonotaulukkoon laitetaan merkkijonoja nimet String[] nimet=null; int lkm = 20; nimet = new String[lkm]; null null pelkkä taulukon esittely ja luonti erikseen esittely ja luonti samassa, 20 merkkijonoa. Taulukon sisältönä null:ia, koska tietoja ei ole annettu. String[] nimet = {"Maija", "Matti"; nimet "Maija" "Matti" taulukon esittely, luonti ja alustaminen samassa 0 1 paikkanumerot taulukossa 3 taulukon esittely ja luonti, 20 merkkijonoa null null null null 0 1 2 3 18 19 int i = 0; String nimi = "Matti"; nimet[i] = nimi; merkkijono nimi ( Matti ) laitetaan taulukkoon paikalle i (0) taulukon nimi taulukon indeksi Matti null null null 0 1 2 3 18 19
3 Tietojen laittaminen taulukkoon int lkm = 0; nimi = input.nextline(); nimi = nimi.trim(); while (lkm < 20 && nimi.length()!= 0){ nimet[lkm] = nimi; lkm++; System.out.print("Anna nimi: "); nimi = input.nextline(); nimi = nimi.trim(); taulukon esittely ja luonti kertoo taulukossa olevien System.out.print("Anna nimi (tyhjä lopettaa): merkkijonojen "); lukumäärän ja myös seuraavan vapaan paikan, minne voi laittaa uuden merkkijonon annettu merkkijono (nimi) sijoitetaan taulukkoon lkm paikalle lkm muuttuja kasvatetaan, jotta seuraava nimi menee seuraavalle paikalle taulukossa 5 Taulukon läpikäynti lkm kertoo taulukon koon (alla esimerkissä se on 20). Tätä tapaa käytetään, kun koko taulukkoa ei välttämättä täytetä. int lkm = 20; for (int i = 0; i < lkm; i++) { System.out.println(nimet[i] + " "); taulukon i:nnen paikan sisältö tai length kertoo taulukon koon (alla esimerkissä se on 20). Tätä tapaa voidaan käyttää, kun taulukon jokainen paikka on täytettynä. int i = 0; while (i < nimet.length) { System.out.println(nimet[i] + " "); i++; taulukon i:nnen paikan sisältö 6
4 import java.util.arrays; public static void main(string[] args) { final int MAX = 20; String[] nimet = new String[MAX]; String nimi; int lkm = 0; Scanner input = new Scanner(System.in); System.out.print("Anna nimi (tyhjä lopettaa): "); nimi = input.nextline(); nimi = nimi.trim(); while (lkm < MAX && nimi.length()!= 0) { nimet[lkm] = nimi; lkm++; if (lkm < MAX) { System.out.print("Anna nimi: "); Tee ohjelma, joka kysyy perheenjäsenten etunimet (max. 20). Käyttäjä voi antaa nimiä, kunnes nimeksi annetaan tyhjä merkkijono tai kun nimiä on annettu 20. esitellään ja luodaan taulukko sijoitetaan nimi taulukkoon jos taulukko ei ole täynnä nimi = input.nextline(); nimi = nimi.trim(); // Jatkuu seuraavalla sivulla 7 Lopuksi ohjelma näyttää nimet aakkosjärjestyksessä. taulukon lajittelu lajiteltava taulukko Arrays.sort(nimet, 0, lkm); mistä indeksistä lajittelu alkaa mihin indeksiin lajittelu päättyy (kyseinen indeksi ei tule mukaan lajitteluun) System.out.println("Nimet ovat aakkosjärjestyksessä"); for (int i = 0; i < lkm; i++) { System.out.println(nimet[i] + " "); // main päättyy 8
5 Lukutaulukko Lukutaulukkoon laitetaan int/double lukuja numerot numerot int[] numerot=null; int lkm = 10; numerot = new int[lkm]; int[] numerot = new int[10]; 0 0 0 0 int[] numerot = {6, 4, 3, 1; 6 4 3 1 pelkkä esittely, taulukko luodaan erikseen esittely ja luonti samassa, 10 kokonaislukua. Taulukon sisältönä nollia, koska tietoja ei ole annettu. esittely, luonti ja alustaminen samassa 0 1 2 3 paikkanumerot taulukossa 9 int[] numerot = new int[10]; taulukon esittely ja luonti, 10 kokonaislukua 0 0 0 0 0 1 2 3 8 9 int i = 0; int luku = 12; luvut[i] = luku; kokonaisluku laitetaan taulukkoon paikalle i (=0) 12 0 0 0 0 1 2 3 8 9 10
6 import java.util.arrays; public static void main(string[] args) { int[] numerot=null; int numero, lkm; esitellään taulukko Tee ohjelma, joka kysyy käyttäjän lottorivin. Aluksi ohjelma kysyy, montako numeroa lottorivissä on. Sen jälkeen ohjelmaa pyytää käyttäjältä hänen lottonumeronsa. Scanner input = new Scanner(System.in); System.out.print("Montako numeroa annat (7-10): "); lkm = input.nextint(); numerot = new int[lkm]; luodaan taulukko for (int i = 0; i < numerot.length; i++) { System.out.print("Anna " + (i+1) + " lottonumerosi: "); numero = input.nextint(); numerot[i] = numero; sijoitetaan numero taulukkoon // Jatkuu seuraavalla sivulla 11 Arrays.sort(numerot, 0, numerot.length); Lopuksi ohjelma näyttää käyttäjän antamat lottonumerot nousevassa järjestyksessä. System.out.print("Rivisi oli "); for (int i = 0; i < numerot.length; i++) { System.out.print(numerot[i] + " "); // main päättyy 12
7 Taulukon kopiointi Taulukkoja ei saa kopioida sijoituslauseella taulukko1 = taulukko2; // VÄÄRIN Sijoituslause laittaa molemmat taulukot viittamaan samoihin tietoihin (eli taulukko2:n tietoihin). Taulukko kopioidaan int[] lotto = new int[lkm]; int[] numerot = new int[lkm]; for (int i = 0; i < lotto.length; i++) { lotto[i] = numerot[i]; 13