Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Filtrering:

4.03: Kaldeste og varmeste måned

Utvidelse av oppgave 4.1 fra oblig 4.

c) Finn hvilken måned som var den kaldeste måneden.

(Hint: Sjekk hvilken posisjon som er kaldest og finn hvilken måned dette tilsvarer).

d) Finn hvilken måned som var den varmeste måneden.

Løsningsforslag ikke tilgjengelig, fordi dette er en utvidelse av oppgave fra obligatorisk innlevering 4.

4.05: Avansert Ole Brum

Navn: OleBrum.java

a) Gjør først oppgave 4.1. Følg samme oppskrift, men denne gangen skal du lese inn filen "avansert_olebrum.txt" som er en fil med mer enn et ord per linje.
(Hint: Her kan du bruke split(" ") for å dele opp linjen og finne de ulike ordene)

b) Utvid programmet ditt slik at det ikke ser forskjell på store/små bokstaver.

Siden dette er en utvidelse av en oppgave fra obligatorisk innlevering 4, foreligger ikke løsningsforslag.

4.07: Avansert kalkulator

Navn: Kalkulator2.java

a) Kopier kalkulatoren fra oppgave 4.4).
b) Utvid programmet slik at alle tallene blir lest inn fra terminalen
c) Utvid programmet med en metode som tar inn en regneoperasjon fra brukeren og la dette avgjøre hvilken metode som skal brukes, feks + gjør at addisjons-metoden blir kalt.
Programmet ditt bør tåle input av typen "2 + 3", og dette bør kalle addisjon(2, 3) og 5 bør skrives til terminalen.

Løsningsforslag ikke tilgjengelig grunnet utvidelse av oblig-oppgave.

4.10: Stavekontroll

Navn: Stavekontroll.java

Denne oppgaven er hentet fra Big Java (P7.7)

Skriv et program som sjekker stavingen til alle ord i en fil. Programmet skal lese hvert ord i filen og sjekke om ordet finnes i en ordliste. En ordliste er tilgjengelig på de fleste Linux-systemer, under '/usr/share/dict/words'. Hvis du ikke får tak i fila, spør gruppelæreren din. Programmet skal skrive ut alle ord som ikke finnes i ordlista.

4.12: Finne flest forekomster i en array.

Navn: FlestGanger.java

a) Lag et program som inneholder en heltallsarray, hvor minst ett av tallene forekommer flere ganger.

b) Finn det tallet som forekommer flest ganger i arrayen.

Kommentarer til koden står under.

class FlestGanger{
    public static void main(String [] args){

        int array [] = {32, 7, 34, 3, 2, 3, 2, 4, 42, 23, 2, 34, 5, 15, 19, 2, 20, 23, 14};

        int mestPopulaer = array[0];
        int mestPopulaerTeller = 0;

        int midlertidigTeller;
        int midlertidig;

        for (int i = 0; i < (array.length - 1); i++) {
            // 1)
            midlertidig = array[i];
            midlertidigTeller = 0; 
            // 2)

            for(int j = i; j < array.length; j++){
                // 3)
                if(array[j] == midlertidig){
                    // 4)
                    midlertidigTeller++;
                }
            } 

            // 5)

            if(midlertidigTeller > mestPopulaerTeller){
                mestPopulaerTeller = midlertidigTeller;
                mestPopulaer = midlertidig;

            }    
        }

        System.out.println("Flest forekomster");
        System.out.println("Element: " + mestPopulaer);
        System.out.println("Antall:" + mestPopulaerTeller);
    }
}

1) I den ytre for-løkka går vi igjennom hvert element i arrayen.

2) midlertidigTeller nullstilles etter hver kjøring av den indre for-løkka, siden vi hver gang ser etter et nytt tall.

3) I den indre for-løkka går vi igjennom hvor mange ganger tallet vi ser etter forekommer i den indre arrayen.

4) Dersom array[j] erlik midlertidig, betyr det at det er det samme tallet. Da skal midlertidigTeller oppdateres med pluss en, siden det har vaert en ny forekomst av tallet vi er på utkikk etter.

5) Når vi har kommet hit i koden(etter den indre forlokken), har vi gått igjennom hele arrayen på utkikk etter ett spesifikt tall. Antall forekomster av dette spesifikke tallet er lagret i variabelen midlertidigTeller, og variabelen midletertidig inneholder det spesifikke tallet. Dersom midlertidigTeller er større enn mestPoplaerTeller, betyr det at tallet midlertidig inneholder, forekommer oftere enn det foregaende mest populaere tallet. Det sjekker vi i if-setningen, og dersom dette blir evaluert som sant, blir mestPopulaer og mestPopulaerTeller oppdatert.

4.13: Behandling av chars

Fil: CharArray.java

  1. Lag en klasse CharArray med en main-metode. Main-metoden skal inneholde en char-array med bokstavene 'a', 'b, 'c', 'd'.
  2. Skriv en metode paaIndeks(char[] array, int indeks), som returnerer bokstaven på indeksen i arrayen.
  3. Skriv en metode storeBokstaverString(char[] array), som returnerer bokstavene i char-arrayen i en string, i kun store bokstaver (uppercase).
  4. Test metodene dine med arrayen fra oppgave 1.

Hint: Det kan være en idé å lese dokumentasjonen for metoden toUpperCase() , som finnes i Javas standardbibliotek.

class CharArray {
    public static void main(String[] args) {
        char[] array = {'a', 'b', 'c', 'd'};

        System.out.print("Paa plass 2: " + paaIndeks(array, 2));
        System.out.println();
        System.out.print("I store bokstaver: " + storeBokstaverString(array));
        System.out.println();
    }

    public static char paaIndeks(char[] array, int indeks) {
        return array[indeks];
    }

    public static String storeBokstaverString(char[] array) {
        String storeBokstaver = "";

        for(int i = 0; i < array.length; i++) {
            storeBokstaver = storeBokstaver + array[i];
        }

        storeBokstaver = storeBokstaver.toUpperCase();

        return storeBokstaver;
    }
}

4.14: Forekomster av tegn

Navn: Forekommer.java

a) Lag et program med en main-metode og en metode som heter "forekommer". Metoden "forekommer" skal sjekke forekomster av tegn i en tekst og returnerer true hvis tegnet forekommer i String-variabelen, og false ellers. Metoden du skal lage skal derfor returnere en boolean og ta inn to parametere: En character og en String.

Test programmet ditt med følgende metode-kall (returnerer true):

forekommer("inf1000", 'i'); 

b) Lag deretter en metode som skal hete "utenRepetisjon" og som tar i mot en String og som fjerner alle repetisjoner av tegn i String-variabelen.

Test programmet ditt med følgende metode-kall (skal returnere "abc"):

utenRepetisjon("aababbabbac"); 

c) Lag en metode som heter "antallForskjellige" og som returnere antall forskjellige tegn som forekommer i en String-variabel.

Test metoden din med String-verdien "aababbabbac" som skal returnere 3.

class Forekommer {
    public static void main(String[] args) {
        System.out.println(forekommer("inf1000", 'i'));
        System.out.println(utenRepetisjon("aababbabbac"));
        System.out.println(antallForskjellige(utenRepetisjon("aababbabbac"));
    }

    public static boolean forekommer(String setning, char bokstav) {
        for(int i = 0; i < setning.length(); i++) {
            if(setning.charAt(i) == bokstav) {
                return true;
            }
        }
        return false;
    }

    public static String utenRepetisjon(String setning) {
        String utenRep = "";

        for(int i = 0; i < setning.length(); i++) {
            boolean funnet = false;
            for(int j = 0; j < utenRep.length(); j++) {
                if(setning.charAt(i) == utenRep.charAt(j)) {
                    funnet = true;
                }
            }
            if(!funnet) {
                utenRep = utenRep + setning.charAt(i);
            }
        }
        return utenRep;
    }

    public static int antallForskjellige(String setning) {
        return utenRepetisjon(setning).length();
    }
}

4.15: Setninger

Navn: Setninger.java

a) Lag et program som leser inn en fil ved hjelp av Scanner.
b) Ta i mot et ord fra brukeren.
c) Skriv ut alle setningene som inneholder dette ordet. Setninger er skilt med punktum.
d) Utvid programmet ditt slik at det håndterer setninger som avsluttes med utropstegn og spørsmålstegn.
e) Test programmet ditt på en valgfri bok fra Project Gutenberg. (Husk at vi vil lese inn rene tekstfiler)

import java.util.Scanner;
import java.io.File;

class Setninger {
    public static void main(String[] args) throws Exception {
        Scanner fil = new Scanner(new File("Bok.txt"));
        String[] setninger;
        int setningsteller = 0;

        String[] setnPaaLinje;
        String linje;
        while(fil.hasNextLine()) {
            linje = fil.nextLine();
            setnPaaLinje = linje.split("[\\.|\\?|\\!]+");
            setningsteller += setnPaaLinje.length;
        }

        fil = new Scanner(new File("Bok.txt"));
        setninger = new String[setningsteller];
        int totalteller = 0;

        while(fil.hasNextLine()) {
            linje = fil.nextLine();
            setnPaaLinje = linje.split("[\\.|\\?|\\!]+");

            for(int i = 0; i < setnPaaLinje.length; i++) {
                setninger[totalteller++] = setnPaaLinje[i].trim();
            }
        }

        Scanner tast = new Scanner(System.in);
        System.out.print("Soek ord: ");
        String soek = tast.nextLine();

        System.out.println("Linjer med ordet: ");
        for(int i = 0; i < setninger.length; i++) {
            setnPaaLinje = setninger[i].split("\\s+");
            for(int j = 0; j < setnPaaLinje.length; j++) {
                if(setnPaaLinje[j].equalsIgnoreCase(soek)) {
                    System.out.println(setninger[i]);
                }
            }
        }
    }
}

4.16: Strenger og bokstaver

Fil: StringMix.java

  1. Skriv en klasse StringMix med en main-metode. Opprett en String i main, med inneholdet "HeiDuErEnFlinkStudent".
  2. Skriv en metode public static char[] smaaBokstaverArray(String setning), som returnerer strengen i form av en char-array, der alle bokstavene er gjort små (lowercase).
  3. Skriv en metode public static boolean sjekkOmForekommer(String setning, char bokstav), som returnerer true dersom bokstaven forekommer i setningen, uavhengig av store og små bokstaver (f.eks. sjekkOmForekommer("HEI", 'h') skal returnere true.
  4. Bruk strengen i main-metoden for å teste metodene dine.
class StringMix {
    public static void main(String[] args) {
        String setning = "HeiDuErEnFlinkStudent";

        System.out.println(smaaBokstaverArray(setning));     // heiduerenflinkstudent
        System.out.println(sjekkOmForekommer(setning, 'z')); // False
        System.out.println(sjekkOmForekommer(setning, 'd')); // True
    }

    public static char[] smaaBokstaverArray(String setning) {
        setning = setning.toLowerCase();

        return setning.toCharArray();
    }

    public static boolean sjekkOmForekommer(String setning, char bokstav) {
        setning = setning.toLowerCase();

        for(int i = 0; i < setning.length(); i++) {
            if(setning.charAt(i) == bokstav) {
                return true;
            }
        }

        setning = setning.toUpperCase();

        for(int i = 0; i < setning.length(); i++) {
            if(setning.charAt(i) == bokstav) {
                return true;
            }
        }

        return false;
    }
}