kpolberg Skrevet 9. mars 2006 Skrevet 9. mars 2006 Sitter her og driver med en oppgave på UiS. Stort sett er det hele i boks, foruten at mitt utrolig flotte program, ikke klarer å regne ut skatten riktig ved verdier under det skatteklassen er satt til. Skattebetaler.java package mineProgr; public class Skattebetaler { public final double TOPPSKATT = 0.28; public final double TILLEGGSKATT = 0.135; public final int KLASSE_1 = 340000; public final int KLASSE_2 = 364000; public double sum = 0; private String fornavn; private int aarsinntekt; private int skatteklasse; public Skattebetaler() { fornavn = "Ola Normann"; aarsinntekt = 374000; skatteklasse = 2; } public Skattebetaler(String fNavn, int inntekt, int skKlasse) { fornavn = fNavn; aarsinntekt = inntekt; skatteklasse = skKlasse; } public void settFNavn(String fNavn){ fornavn = fNavn; } public void settInntekt(int inntekt){ aarsinntekt = inntekt; } public void settSkKlasse(int skKlasse){ skatteklasse = skKlasse; } public int beregnSkatt(){ if (skatteklasse == 1) { sum = (TOPPSKATT*aarsinntekt+TILLEGGSKATT*(aarsinntekt-KLASSE_1)); } else if (skatteklasse == 1 && aarsinntekt < KLASSE_1) { sum = (TOPPSKATT*aarsinntekt); } if (skatteklasse == 2) { sum = (TOPPSKATT*aarsinntekt+TILLEGGSKATT*(aarsinntekt-KLASSE_2)); } else if (skatteklasse == 2 && aarsinntekt < KLASSE_2) { sum = (TOPPSKATT*aarsinntekt); } else { System.out.println("Skatteklassen er ugyldig"); } return (int)sum; } public void visSkattebetaler(){ System.out.println("Navn: "+fornavn); System.out.println("Inntekt: "+aarsinntekt); System.out.println("Skatteklasse: "+skatteklasse); System.out.println("Skatt: "+beregnSkatt()); } } skatteprogram.java package mineProgr; import java.util.Scanner; public class skatteprogram { public static void main (String[] args){ int ant = 0; Scanner scan = new Scanner (System.in); System.out.print("Oppgi antall skattebetalere: "); ant = scan.nextInt(); System.out.println(); Skattebetaler[] person = new Skattebetaler[ant]; for(int i=0; i<ant; i++) { person[i] = new Skattebetaler(); System.out.print("Navn: "); person[i].settFNavn(scan.next()); System.out.print("Inntekt: "); person[i].settInntekt(scan.nextInt()); System.out.print("Skatteklasse: "); person[i].settSkKlasse(scan.nextInt()); System.out.println(); } for (int i=0; i<ant; i++){ person[i].visSkattebetaler(); System.out.println(); } } } Noen som har noen gode ideer for å hjelpe meg på vei?
kingkong Skrevet 9. mars 2006 Skrevet 9. mars 2006 (endret) Bytt ut alle "else if" med "if" eller eventuelt sett deg inn i hvordan "else if" fungerer. Den siste "else" må også endres i tilfelle. Endret 9. mars 2006 av kingkong
kpolberg Skrevet 9. mars 2006 Forfatter Skrevet 9. mars 2006 Bytt ut alle "else if" med "if" eller eventuelt sett deg inn i hvordan "else if" fungerer. Den siste "else" må også endres i tilfelle. 5726747[/snapback] Takk for hjelpen, da ble det seende slik ut, og det beste det fungerer public int beregnSkatt(){ if (skatteklasse == 1) { sum = (TOPPSKATT*aarsinntekt+TILLEGGSKATT*(aarsinntekt-KLASSE_1)); } if (skatteklasse == 1 && aarsinntekt < KLASSE_1) { sum = (TOPPSKATT*aarsinntekt); } if (skatteklasse == 2) { sum = (TOPPSKATT*aarsinntekt+TILLEGGSKATT*(aarsinntekt-KLASSE_2)); } if (skatteklasse == 2 && aarsinntekt < KLASSE_2) { sum = (TOPPSKATT*aarsinntekt); } if (skatteklasse < 1) { System.out.println("Skatteklassen er ugyldig"); } if (skatteklasse > 2) { System.out.println("Skatteklassen er ugyldig"); Du har ikke mulighet for å gi en liten innføring i else if, eller ihvertfall påpeke hvor feilen ved else if lå?
oyvind_b Skrevet 10. mars 2006 Skrevet 10. mars 2006 Jeg ville kanskje gjort noe slikt: public int beregnSkatt() { if (skatteklasse == 1) { if (aarsinntekt < KLASSE_1) { sum = (TOPPSKATT*aarsinntekt); } else { sum = (TOPPSKATT*aarsinntekt+TILLEGGSKATT*(aarsinntekt-KLASSE_1)); } } else if (skatteklasse == 2) { if (aarsinntekt < KLASSE_2) { sum = (TOPPSKATT*aarsinntekt); } else { sum = (TOPPSKATT*aarsinntekt+TILLEGGSKATT*(aarsinntekt-KLASSE_2)); } } else { System.out.println("Skatteklassen er ugyldig"); } return (int)sum; } Håper det hjelper deg å forstå if og else if bedre Øyvind
oyvind_b Skrevet 10. mars 2006 Skrevet 10. mars 2006 (endret) Eller enda bedre : public int beregnSkatt() { if (skatteklasse < 1 || skatteklasse > 2) { System.out.println("Skatteklassen er ugyldig"); } sum = TOPPSKATT * aarsinntekt; if (skatteklasse == 1 && aarsinntekt >= KLASSE_1) { sum += TILLEGGSKATT * (aarsinntekt - KLASSE_1); } else if (skatteklasse == 2 && aarsinntekt >= KLASSE_2) { sum += TILLEGGSKATT * (aarsinntekt - KLASSE_2); } return (int)sum; } Øyvind Endret 10. mars 2006 av oyvind_b
Skuggen Skrevet 10. mars 2006 Skrevet 10. mars 2006 Eventuelt kan man bruke en switch switch(skatteklasse){ case 1: //Beregning skatteklasse 1 break; case 2: //beregning skatteklasse 2 break; default: //Kode for ugyldig skatteklasse break; } Øyvind 2
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å