import java.io.*; /** Denne klassen representerer data om en vare i et varelager. * Klassen er ufullstendig, hovedvekten er på lesing fra og * skriving til filer. */ public class Vare { final static char FELT_SLUTT_TEGN = ';'; String navn; double pris; int antall; /** Standardkonstruktør */ Vare() {} /** Ikke-standard konstruktør: * ny vare med angitt navn, pris og antall på lager */ Vare(String navn, double pris, int antall) { this.navn = navn; this.pris = pris; this.antall = antall; } /** Skriver ut varedata til standard ut-strøm (terminal) */ void skriv_til_terminal() { System.out.println(navn + ": pris " + pris + " kr, beholdning: " + antall); } /** Skriver varedata til en fil via en gitt tegn-ut-strøm */ void skriv_til_fil(PrintWriter tekstSkriver) { tekstSkriver.print(navn); tekstSkriver.print(FELT_SLUTT_TEGN); tekstSkriver.print(pris); tekstSkriver.print(FELT_SLUTT_TEGN); tekstSkriver.println(antall); } /** Leser varedata fra en fil via en gitt tegn-inn-strøm */ void les_fra_fil(BufferedReader tekstLeser) throws IOException { // Leser en post som en hel tekstlinje. String post = tekstLeser.readLine(); // Finn indeksene til feltslutt-tegnene i posten. int feltslutt1 = post.indexOf(FELT_SLUTT_TEGN); int feltslutt2 = post.indexOf(FELT_SLUTT_TEGN, feltslutt1 + 1); // Plukk ut de enkelte feltene navn = post.substring(0, feltslutt1); String felt2 = post.substring(feltslutt1 + 1, feltslutt2); String felt3 = post.substring(feltslutt2 + 1); // Konverter til numeriske datatyper pris = Double.parseDouble(felt2); antall = Integer.parseInt(felt3); } }