Prosjekt: Geografi-Quiz
I dette prosjektet lærer du å lage et interaktivt program med dialogbokser, logikk og tekst-rensing.
Sentrale konsepter
JOptionPane
Vi bruker showMessageDialog for beskjeder og
showInputDialog for spørsmål.
Strenger og Heltall
Vi bruker String for tekst og int
for å telle poeng med poeng++.
Rensing
Vi bruker .trim() og
toLowerCase() for å godta svar med småfeil.
Gjenbruk
Vi lager en egen metode for å rydde tekst, så vi slipper å skrive koden mange ganger.
Bygg programmet steg for steg
1Importer bibliotekene
Først må vi fortelle Java at vi skal bruke ferdige verktøy for vinduer (JOptionPane) og systemet (System).
import static java.lang.System.*;
import static javax.swing.JOptionPane.*;
public class GeografiQuiz {
public static void main(String[] args) {
2Håndter brukerens navn
Vi henter navnet og bruker .trim() for å fjerne tomrom. Hvis
navnet er tomt, setter vi det til "ukjent".
String navn = showInputDialog(null, "Hva heter du?");
if (navn == null) return; // Avslutter hvis bruker trykker avbryt
navn = navn.trim();
if (navn.isEmpty()) navn = "ukjent";
showMessageDialog(null, "Hei, " + navn + "! Lykke til!");
int poeng = 0;
3Lag en egen metode for "vasking" av tekst
I stedet for å skrive toLowerCase() og trim() på
hvert eneste spørsmål, lager vi en metode utenfor main-delen. Denne metoden tar
imot en tekst, rydder den, og sender den tilbake.
// Denne plasseres nederst i klassen, før den siste krøllparentesen
private static String normaliserTekst(String tekst) {
return tekst.trim()
.toLowerCase()
.replace("-", " ") // Bytter bindestrek med mellomrom
.replaceAll("\\s+", " "); // Fjerner doble mellomrom
}
4Stille spørsmål og bruke metoden
Nå kan vi bruke metoden vår til å sjekke om svarene er riktige, uansett hvordan brukeren skriver det.
String svar = showInputDialog(null, "Hvilket kontinent ligger Brasil på?");
// Vi sender 'svar' inn i metoden vår før vi sammenligner med "sør amerika"
if (svar != null && normaliserTekst(svar).equals("sør amerika")) {
showMessageDialog(null, "Riktig!");
poeng++;
}
Forslag til fasit:
import static java.lang.System.*;
import static javax.swing.JOptionPane.*;
public class GeografiQuiz {
public static void main(String[] args) {
showMessageDialog(null, "Velkommen til geografi-quizen!");
// Spør om navn og rydd teksten
String navn = showInputDialog(null, "Hva heter du?");
if (navn == null) return;
navn = navn.trim();
if (navn.isEmpty()) navn = "ukjent";
showMessageDialog(null, "Hei, " + navn + "! Lykke til!");
int poeng = 0; // Holder styr på antall rette svar
// --- Spørsmål 1 ---
String svar = showInputDialog(null, "Hva er hovedstaden i Frankrike?");
if (svar != null && svar.trim().equalsIgnoreCase("paris")) {
showMessageDialog(null, "Riktig!");
poeng++;
} else {
showMessageDialog(null, "Feil! Riktig svar er Paris.");
}
// --- Spørsmål 2 (bruker normaliserTekst-metoden) ---
svar = showInputDialog(null, "Hvilket kontinent ligger Brasil på?");
if (svar != null && normaliserTekst(svar).equals("sør amerika")) {
showMessageDialog(null, "Riktig!");
poeng++;
} else {
showMessageDialog(null, "Feil! Riktig svar er Sør-Amerika.");
}
// --- Spørsmål 3 ---
svar = showInputDialog(null, "Hva heter verdens største hav?");
if (svar != null && normaliserTekst(svar).equals("stillehavet")) {
showMessageDialog(null, "Riktig!");
poeng++;
} else {
showMessageDialog(null, "Feil! Riktig svar er Stillehavet.");
}
// Avslutning
showMessageDialog(null, "Du fikk " + poeng + " poeng.");
showMessageDialog(null, "Takk for at du spilte, " + navn + "!");
// Skriver poengsummen til terminalen til slutt
out.println("Quiz ferdig. Poeng: " + poeng);
}
/**
* En hjelpemetode som gjør tekst sammenlignbar ved å:
* 1. Fjerne mellomrom foran/bak
* 2. Gjøre alt til små bokstaver
* 3. Bytte ut bindestreker med mellomrom
*/
private static String normaliserTekst(String tekst) {
return tekst.trim()
.toLowerCase()
.replace("-", " ")
.replaceAll("\\s+", " ");
}
}