Side 1 av 1

Enkelt javaspørsmål

Lagt inn: 30/12-2014 18:31
av Markussen
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. :)

Re: Enkelt javaspørsmål

Lagt inn: 30/12-2014 22:52
av Aleks855
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
            }
        }

Re: Enkelt javaspørsmål

Lagt inn: 01/01-2015 16:07
av Markussen
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.
:)

Re: Enkelt javaspørsmål

Lagt inn: 01/01-2015 22:44
av Aleks855
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.

Re: Enkelt javaspørsmål

Lagt inn: 02/01-2015 12:34
av Markussen
Takk! Skal prøve. Har ikke lært arraylist enda, så får lese meg litt opp på det. :)