← Tilbake

Java – Øvingsoppgaver

Dette oppgavearket er bygget i samme stil som repetisjonsoppgavene dere har brukt i Python: korte oppgaver og komplette fasiter.

Sentrale konsepter

Input/Output

Dialogbokser

Vi går fra print() til JOptionPane for å lage vinduer.

Datatyper

Parsing

Vi lærer å konvertere tekst til tall med Integer.parseInt().

Kontroll

Løkker og switch

Vi bruker for og while for å gjenta operasjoner, og switch for å velge handling ut fra en verdi.

Samlinger

HashMap

Vi lagrer data som nøkkel-verdi par, akkurat som en Python dictionary.

💡
Viktig huskeregel: Lag én fil per oppgave. Filnavnet må være nøyaktig likt som public class navnet (f.eks. Oppgave01_Print.java).
Repetisjon
Basic

01Print

Skriv ut "Hei, verden!" til terminalen.

Hint: Bruk System.out.println().
Fil: Oppgave01_Print.java
Variabler

02Regning

Bruk int a = 4 og b = 6. Print sum, diff og produkt.

Hint: Du kan legge sammen tall direkte inne i print-parentesen.
Fil: Oppgave02_Variabler.java
GUI / Input

03Input-dialog

Spør "Hva heter du?" og vis hilsen i showMessageDialog.

Hint: Husk import javax.swing.JOptionPane; øverst.
Fil: Oppgave03_Input.java
Logikk

04If/Else

Sjekk om et tall fra brukeren er større enn 10.

Hint: Input fra dialogbokser er alltid tekst (String). Bruk Integer.parseInt() for å få et tall.
Fil: Oppgave04_IfElse.java
Løkker

05For-løkke

Print tallene 1 til 5 på hver sin linje.

Hint: Syntaks: for (int i = 1; i <= 5; i++).
Fil: Oppgave05_For.java
Løkker

06While-løkke

Lag teksten "0 1 2 3" og vis i én dialogboks.

Hint: Lag en tom String før løkka, og legg til tallene og et mellomrom inne i løkka.
Fil: Oppgave06_While.java
Konvertering

07Navn + alder

Hent både tekst og tall. Vis resultatet samlet.

Hint: Du trenger to showInputDialog etter hverandre.
Fil: Oppgave07_StrengTall.java
Prosjekt

08Mini-quiz

Lag en quiz på "2 + 2" med poengteller.

Hint: Bruk .equals("4") for å sjekke om tekst-inputen stemmer.
Fil: Oppgave08_Quiz.java
Nytt stoff

Switch og HashMap

1. Switch (Kalkulatorens "sentralbord")

Når vi har mange valg for samme variabel, er switch ryddigere enn if-else. Tenk på variabelen i parentesen som den tingen vi sjekker innholdet i:

String tegn = "+";
switch (tegn) {
    case "+": // Hvis "tegn" er pluss...
        resultat = n1 + n2;
        break; // Ferdig med sjekken!
    case "-":
        resultat = n1 - n2;
        break;
}

2. HashMap (Kobling mellom to variabler)

En HashMap parer to verdier sammen. Vi kaller dem Key (nøkkel) og Value (verdi). Tenk på det som en variabel som inneholder mange andre variabler:

// Vi lager en "bok" som kobler en tekst til en annen tekst:
HashMap<String, String> bok = new HashMap<>();

// .put(nøkkel, verdi) lagrer paret:
bok.put("katt", "cat");

// For å hente ut, bruker vi bare nøkkelen:
String svar = bok.get("katt"); // Nå inneholder "svar" teksten "cat"
Tips: Bruk bok.containsKey("ord") for å sjekke om en nøkkel finnes før du prøver å hente den.
Øv deg på Switch og HashMap
Kalkulator

09Kalkulator

Håndter tall og operasjon (+, -, *, /).

Hint: Bruk først if-else, så utvider du programmet med switch for å sjekke hvilken operasjon brukeren skrev.
Fil: Oppgave09_Kalkulator.java
HashMap

10Mini-ordbok

Lag oversettelser som kan søkes opp.

Hint: Bruk ordbok.containsKey(nøkkel) for å se om ordet finnes.
Fil: Oppgave10_MiniOrdbok.java
HashMap

11Telefonbok

Avansert HashMap med meny for ny, hent, slett og liste.

Hint: Legg hele menyen inne i en while(true)-løkke så programmet ikke stopper.
Fil: Oppgave11_Telefonbok.java

Løsningsforslag:

public class Oppgave01_Print {
    public static void main(String[] args) {
        System.out.println("Hei, verden!");
    }
}

public class Oppgave02_Variabler {
    public static void main(String[] args) {
        int a = 4;
        int b = 6;
        System.out.println(a + b);
        System.out.println("a - b = " + (a - b));
        System.out.println("a * b = " + (a * b));
    }
}

import javax.swing.JOptionPane;
public class Oppgave03_Input {
    public static void main(String[] args) {
        String navn = JOptionPane.showInputDialog("Hva heter du?");
        if (navn != null) {
            JOptionPane.showMessageDialog(null, "Hei, " + navn + "!");
        }
    }
}

import javax.swing.JOptionPane;
public class Oppgave04_IfElse {
    public static void main(String[] args) {
        String txt = JOptionPane.showInputDialog("Skriv et tall:");
        if (txt != null) {
            int tall = Integer.parseInt(txt);
            if (tall > 10) {
                JOptionPane.showMessageDialog(null, "Større enn 10");
            } else {
                JOptionPane.showMessageDialog(null, "10 eller mindre");
            }
        }
    }
}

public class Oppgave05_For {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            System.out.println(i);
        }
    }
}

import javax.swing.JOptionPane;
public class Oppgave06_While {
    public static void main(String[] args) {
        int i = 0; String tekst = "";
        while (i <= 3) {
            tekst += i + " ";
            i++;
        }
        JOptionPane.showMessageDialog(null, tekst.trim());
    }
}

import javax.swing.JOptionPane;
public class Oppgave07_StrengTall {
    public static void main(String[] args) {
        String navn = JOptionPane.showInputDialog("Navn:");
        String alderTxt = JOptionPane.showInputDialog("Alder:");
        if (navn != null && alderTxt != null) {
            int alder = Integer.parseInt(alderTxt);
            JOptionPane.showMessageDialog(null, navn + " er " + alder + " år.");
        }
    }
}

import javax.swing.JOptionPane;
public class Oppgave08_Quiz {
    public static void main(String[] args) {
        int poeng = 0;
        String svar = JOptionPane.showInputDialog("Hva er 2 + 2?");
        if (svar != null && svar.equals("4")) {
            poeng++;
            JOptionPane.showMessageDialog(null, "Riktig! Poeng: " + poeng);
        } else {
            JOptionPane.showMessageDialog(null, "Feil!");
        }
    }
}

import javax.swing.JOptionPane;
public class Oppgave09_Kalkulator {
    public static void main(String[] args) {
        String t1 = JOptionPane.showInputDialog("Første tall:");
        String op = JOptionPane.showInputDialog("Operasjon (+,-,*,/):");
        String t2 = JOptionPane.showInputDialog("Andre tall:");
        if (t1 == null || op == null || t2 == null) return;
        double n1 = Double.parseDouble(t1);
        double n2 = Double.parseDouble(t2);
        double res = 0;
        if (op.equals("+")) res = n1 + n2;
        else if (op.equals("-")) res = n1 - n2;
        else if (op.equals("*")) res = n1 * n2;
        else if (op.equals("/")) res = n1 / n2;
        JOptionPane.showMessageDialog(null, "Resultat: " + res);
    }
}

import javax.swing.JOptionPane;
import java.util.HashMap;
public class Oppgave10_MiniOrdbok {
    public static void main(String[] args) {
        HashMap<String, String> ordbok = new HashMap<>();
        ordbok.put("katt", "cat");
        while (true) {
            String norsk = JOptionPane.showInputDialog("Norsk ord (eller ESC):");
            if (norsk == null || norsk.equalsIgnoreCase("ESC")) break;
            if (ordbok.containsKey(norsk)) {
                JOptionPane.showMessageDialog(null, norsk + " = " + ordbok.get(norsk));
            } else {
                String ny = JOptionPane.showInputDialog("Ukjent ord. Oversettelse?");
                if (ny != null) ordbok.put(norsk, ny);
            }
        }
    }
}

import javax.swing.JOptionPane;
import java.util.*;
public class Oppgave11_Telefonbok {
    public static void main(String[] args) {
        HashMap<String, String> bok = new HashMap<>();
        while (true) {
            String cmd = JOptionPane.showInputDialog("Meny: ny, liste, slett, ESC");
            if (cmd == null || cmd.equalsIgnoreCase("ESC")) break;
            if (cmd.equals("ny")) {
                String n = JOptionPane.showInputDialog("Navn:");
                String t = JOptionPane.showInputDialog("Nummer:");
                bok.put(n, t);
            } else if (cmd.equals("liste")) {
                JOptionPane.showMessageDialog(null, bok.toString());
            } else if (cmd.equals("slett")) {
                String n = JOptionPane.showInputDialog("Hvem skal slettes?");
                bok.remove(n);
            }
        }
    }
}