Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse
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

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

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 av oyvind_b
Lenke til kommentar

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 :p

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...