Enkelt javaspørsmål

Her kan du stille spørsmål vedrørende problemer og oppgaver i matematikk på høyskolenivå. Alle som har kunnskapen er velkommen med et svar. Men, ikke forvent at admin i matematikk.net er spesielt aktive her.

Moderatorer: Vektormannen, espen180, Aleks855, Solar Plexsus, Gustav, Nebuchadnezzar, Janhaa

Svar
Markussen
Galois
Galois
Innlegg: 585
Registrert: 13/11-2012 14:42

Jeg lurer litt på hvordan jeg skal lage et klientprogram med filewriter og filereader. Jeg har allerede sett UDL.no sine videoer rundt dette, men jeg skjønner ikke helt hvordan jeg kan gjøre dette hvis jeg bruker en optionDialog.

Brukeren skal kunne velge mellom følgende alternativer:
- reserver bord (les inn navn og antall bord)
- finn hvilke bord en bestemt person har reservert (les inn navn)
- frigi bord (les inn aktuelle bordnummer)
- avslutt

Jeg har allerede laget en Bord-klasse og en Restaurant-klasse. Dette er hva jeg har fått til i klientprogrammet mitt:

Kode: Velg alt

import java.io.*;

import static javax.swing.JOptionPane.*;

class Main {
    public static void main(String[] args) throws Exception {

        File f = new File("Restauranten.txt");

        FileReader fr = new FileReader(f);
        BufferedReader = new BufferedReader(fr);


        final int AVSLUTT = 0;
        final int FRIGI_BORD = 1;
        final int BORD_RESERVERT = 2;
        final int RESERVER_BORD = 3;
        boolean opprettet = false;
        Restaurant rest = new Restaurant(0);

        String[] muligheter = {"Avslutt", "Frigi bord", "Bord reservert", "Reserver bord"};
        int valg = showOptionDialog(null, "Min restaurant:", , 0, PLAIN_MESSAGE, null, muligheter, muligheter[0]);
        while (valg != 0) {
           // HER MÅ JEG BRUKE SWITCH, ELLER IF/ELSE.
        }
    }
}

Lurer på om det jeg har gjort er riktig, og hvordan kan jeg gjøre resten?

Takker for hjelp. :)
Aleks855
Rasch
Rasch
Innlegg: 6855
Registrert: 19/03-2011 15:19
Sted: Trondheim
Kontakt:

I while-løkka må du sørge for at showOptionDialog dukker opp på nytt helt til man velger "Avslutt". Videre kan du switche på valg-variabelen for å fortsette logikken.

Forslag:

Kode: Velg alt

String[] muligheter = {"Avslutt", "Frigi bord", "Bord reservert", "Reserver bord"};
        int valg = -1; // -1 kan brukes for feilsøking senere
        while (valg != 0) {
            valg = showOptionDialog(null, "Min restaurant:", "Alternativer" , 0, PLAIN_MESSAGE, null, muligheter, muligheter[0]);

            switch(valg){
                case 0:
                    System.exit(0);
                case 1:
                    //Logikk for frigjøring av reservasjon
                case 2:
                    //Logikk dersom bord er reservert
                case 3:
                    //Logikk for reservering
            }
        }
Bilde
Markussen
Galois
Galois
Innlegg: 585
Registrert: 13/11-2012 14:42

Takk for svar!

Men jeg har selvfølgelig glemt javaboka mi i Trondheim, så finner jeg heller ingen gode tutorials på hvordan jeg kan lese og skrive til fil.
:)
Aleks855
Rasch
Rasch
Innlegg: 6855
Registrert: 19/03-2011 15:19
Sted: Trondheim
Kontakt:

Jeg kan gi deg et eksempel.

For å lese fra fil og lagre det i en ArrayList:

Kode: Velg alt

ArrayList content;
        BufferedReader br = new BufferedReader(new FileReader("file.txt"));
        try {
            content = new ArrayList<String>();
            String line = br.readLine();

            while (line != null) {
                content.add(line);
                line = br.readLine();
            }
        } finally {
            br.close();
        }
Her vil hver linje i file.txt lagres som en String i en ArrayList så du kan hente ut hver linje for seg. Du burde også catche IOException før "finally", men det så jeg bort fra her.

For å skrive til fil:

Kode: Velg alt

File file = new File("file.txt");
        FileWriter fw;
        try{
            fw = new FileWriter(file);

            fw.write("lololol");
            fw.write(System.lineSeparator()); //Ny linje
            fw.write("more lololol");

            fw.close();

        }
        catch(IOException e){
            e.printStackTrace();
        }
Merk at dette overskriver det som allerede er i fila, så hvis du vil beholde det, så burde du reade det først, og deretter legge til det du ønsker i ArrayListen, og skrive det tilbake til fila. Det finnes bedre metoder for enorme filer, men dette er det mest grunnleggende.
Bilde
Markussen
Galois
Galois
Innlegg: 585
Registrert: 13/11-2012 14:42

Takk! Skal prøve. Har ikke lært arraylist enda, så får lese meg litt opp på det. :)
Svar