mong0 Skrevet 19. april 2007 Del Skrevet 19. april 2007 (endret) Noen som har peil? Får det ikke helt til å stemme:\ Oppgave a) Ta utgangspunkt i Skattebetaler-klassen fra øving 6. (Det er lov å hente den fra løsningsforslaget, hvis du ønsker det.) Gjør først som i øving 6: Opprett en tabell av skattebetalere, og legg inn data. Innholdet av denne tabellen skal nå lagres på filen ”skatt.txt” på en fornuftig måte. (For eksempel én skattebetaler pr. linje.) Første linje av tekstfilen skal være det antall skattebetalere som er lagt inn på denne filen. Oppgave b) Les fra filen ”skatt.txt”. Opprett en ny tabell av klassen Skattebetaler, med det antall elementer som er spesifisert i første linje i tekstfilen. Fyll inn data i tabellen med det som er lagret i tekstfilen. Skriv så ut på skjermen: Navn, inntekt, skatteklasse og skatt for alle skattebetalerne i tabellen. Prog: package oving10; import java.io.*; public class Skatt { private PrintStream writer; private BufferedReader reader; private static Skattebetaler[] betaler; public Skatt() { // legg inn info om skattebetalere i arrayen "betalere" betaler[0].settFNavn("Ola"); betaler[0].settInntekt("hmm"); betaler[0].settSkKlasse("hmm"); } public void skrivTilFil() { try { writer = new PrintStream(new FileOutputStream("skatt.txt")); int lines = betaler.length; writer.print(lines + "\n"); for (int i = 1; i <= lines; i++) { writer.println(betaler[i - 1].getName() + " " + betaler[i - 1].getInntekt() + " " + betaler[i - 1].getSKlasse()); } } catch (FileNotFoundException e) { } } public void lesFraFil() { try { reader = new BufferedReader(new InputStreamReader( new FileInputStream("skatt.txt"))); int lines = reader.read(); String[] skatt = new String[lines]; for (int i = 0; i < lines; i++) { skatt = reader.readLine(); } betaler = new Skattebetaler[lines]; for(int i = 0; i < lines; i++) { betaler.settFNavn(skatt.substring(0, skatt.indexOf(" "))); betaler.settInntekt(Integer.parseInt(skatt.substring(skatt.indexOf(" ")+1, skatt.lastIndexOf(" ")))); betaler.settSkKlasse(Integer.parseInt(skatt.substring(skatt.lastIndexOf(" ")))); } } catch (FileNotFoundException e) { } catch (IOException e) { } } public static void main(String args) { Skatt s = new Skatt(); for(int i = 0; i < s.betaler.length; i++) { s.betaler.visSkattebetaler(); } } } og package oving10; public class Skattebetaler { // Statiske konstanter static final double GRUNNSKATT = 28.0; static final double TOPPSKATT = 13.5; static final int KLASSE1_SATS = 340000; static final int KLASSE2_SATS = 364000; // felt private String fornavn; private int aarsinntekt; private int skatteklasse; // Konstruktører public Skattebetaler() { // Initialiserer med standardverdier, skatteklasse = 1; // unntatt skatteklasse som settes lik 1. } public Skattebetaler(String fNavn, int inntekt, int skKlasse) { settFNavn(fNavn); settInntekt(inntekt); settSkKlasse(skKlasse); } // Instansmetoder public void settFNavn(String fNavn) { fornavn = fNavn; } public void settInntekt(int inntekt) { if (inntekt < 0) { System.out.println("Negativ inntekt ugyldig. Inntekt satt til 0."); aarsinntekt = 0; } else aarsinntekt = inntekt; } public void settSkKlasse(int skKlasse) { if (skKlasse != 1 && skKlasse != 2) { System.out.println("Ugyldig skatteklasse. " + "Skatteklasse settes lik 1."); skatteklasse = 1; } else skatteklasse = skKlasse; } public int beregnSkatt() { int sats; if (skatteklasse == 1) sats = KLASSE1_SATS; else sats = KLASSE2_SATS; double skatt = (GRUNNSKATT / 100) * aarsinntekt; if (aarsinntekt > sats) skatt += (TOPPSKATT / 100) * (aarsinntekt - sats); return (int) skatt; } public void visSkattebetaler() { System.out.println("----------------"); System.out.println("Navn: " + fornavn); System.out.println("Inntekt: " + aarsinntekt); System.out.println("Skatteklasse: " + skatteklasse); System.out.println("Skatt: " + beregnSkatt()); } public String getName() { return this.fornavn; } public int getSKlasse() { return this.skatteklasse; } public int getInntekt() { return this.aarsinntekt; } } På forhånd takk Endret 20. april 2007 av mong0 Lenke til kommentar
krigun Skrevet 19. april 2007 Del Skrevet 19. april 2007 Er dette noe du har skrevet, eller er det oppgaven som du ønsker oss andre til å løse for deg eller hva er egentlig spørsmålet? Tips: Hvis du vil at andre skal hjelpe deg bør du vise til litt innsats fra din egen side for å ha forsøkt å løse problemet. Ingen gidder å løse oppgaven for deg. Lenke til kommentar
Thorsen Skrevet 19. april 2007 Del Skrevet 19. april 2007 (endret) Edit: Ta å endre tittelen på tråden, er nok ikke så mange som vet hva oppgave 10 er Kjenner til denne ja Oppgaven er fra et kurs i programering i java på UIS. Kan gi deg noen tips; 1, Oppgaven sier ingenting om at feilmeldinger skal fanges, det er derfor ikke nødvendig å koplisere ting med try catch blokker. Skriv først programmet uten disse, se at det virker og så kan du eventuelt legge dem in. 2, public Skatt() { // legg inn info om skattebetalere i arrayen "betalere" betaler[0].settFNavn("Ola"); betaler[0].settInntekt("hmm"); betaler[0].settSkKlasse("hmm"); Ser i skattebetaler klassen din at Inntekt og Skklasse er int verdier, å sette in hmm vill derfor ikke være serlig smart. 3, Hvorfor bruker du ikke konstruktøren for å legge inn disse verdiene i tabellen over Skattebetalere, du har jo i skattebetaler klassen denne: public Skattebetaler(String fNavn, int inntekt, int skKlasse) { settFNavn(fNavn); settInntekt(inntekt); settSkKlasse(skKlasse); } Ville da brukt noe slik som dette for å legge inn data: int antall = 5; Skattebetaler SB[] = new Skattebetaler[antall]; //Oppretter 5 skattebelatere SB[0] = new Skattebetaler("Per",100000,1); SB[1] = new Skattebetaler("Olga",1000000,2); SB[2] = new Skattebetaler("Person",150000,1); SB[3] = new Skattebetaler("Jan",200000,1); SB[4] = new Skattebetaler("Gundersen",150,1); Endret 19. april 2007 av Thorsen Lenke til kommentar
mong0 Skrevet 19. april 2007 Forfatter Del Skrevet 19. april 2007 Ok, skjønner trur eg.. Men hvor ville du lagt inn det siste? Og er det ikke noe feil i main løkka mi? Får ikke kjøre som java app pga noe feil med "Main":\ Krigun, har skrevet det meste av koden selv.. Sry viss det var vanskelig å forstå hva jeg spurte etter Lenke til kommentar
Thorsen Skrevet 20. april 2007 Del Skrevet 20. april 2007 (endret) Ok, skjønner trur eg.. Men hvor ville du lagt inn det siste? Og er det ikke noe feil i main løkka mi? Får ikke kjøre som java app pga noe feil med "Main":\ Krigun, har skrevet det meste av koden selv.. Sry viss det var vanskelig å forstå hva jeg spurte etter 8426905[/snapback] Jo når du sier det så public static void main(String args) { Skatt s = new Skatt(); for(int i = 0; i < s.betaler.length; i++) { s.betaler[i].visSkattebetaler(); } s.betaler tabellen din er ikke definert noe sted. Endret 20. april 2007 av Thorsen Lenke til kommentar
mong0 Skrevet 20. april 2007 Forfatter Del Skrevet 20. april 2007 Jo når du sier det så public static void main(String args) { Skatt s = new Skatt(); for(int i = 0; i < s.betaler.length; i++) { s.betaler[i].visSkattebetaler(); } s.betaler tabellen din er ikke definert noe sted. 8427184[/snapback] Blir den rett om jeg fjerner "s." forann betaler? Lenke til kommentar
Patton Skrevet 20. april 2007 Del Skrevet 20. april 2007 Jo når du sier det så public static void main(String args) { Skatt s = new Skatt(); for(int i = 0; i < s.betaler.length; i++) { s.betaler[i].visSkattebetaler(); } s.betaler tabellen din er ikke definert noe sted. 8427184[/snapback] Blir den rett om jeg fjerner "s." forann betaler? 8428560[/snapback] Hvorfor proever du ikke det ut selv? Proeving og feiling, det er slik man laerer. Lenke til kommentar
mong0 Skrevet 20. april 2007 Forfatter Del Skrevet 20. april 2007 Jepp, gjor det og fant ut av det Takk for hjelpa Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå