kpolberg Skrevet 9. mars 2006 Del 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? Lenke til kommentar
kingkong Skrevet 9. mars 2006 Del 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 Lenke til kommentar
kpolberg Skrevet 9. mars 2006 Forfatter Del 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å? Lenke til kommentar
oyvind_b Skrevet 10. mars 2006 Del 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 Lenke til kommentar
oyvind_b Skrevet 10. mars 2006 Del 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 Lenke til kommentar
Skuggen Skrevet 10. mars 2006 Del 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 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å