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.

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

Post Reply
Markussen
Galois
Galois
Posts: 585
Joined: 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:

Code: Select all

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
Posts: 6873
Joined: 19/03-2011 15:19
Location: Trondheim
Contact:

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:

Code: Select all

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
            }
        }
Image
Markussen
Galois
Galois
Posts: 585
Joined: 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
Posts: 6873
Joined: 19/03-2011 15:19
Location: Trondheim
Contact:

Jeg kan gi deg et eksempel.

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

Code: Select all

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:

Code: Select all

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.
Image
Markussen
Galois
Galois
Posts: 585
Joined: 13/11-2012 14:42

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