# Sehr wichtig, brauche dringend hilfe!



## hungary_88 (10. Jul 2005)

Hallo,

ich muss bis morgen eine aufgabe für die schule gelöst haben, da diese aufgabe eintscheidet ob ich eine 3.5 oder 4 in AIT bekomme ist mir die lösung dieser aufgabe sehr wichtig, desshalb wäre ich über jegliche hilfe von euch sehr sehr dankbar!!!!


Nun zur Aufgabe...

***************************************************************************************************
Bevor das einkommen versteuert wird, steht jedem bürger ein freibetrag von 5000 D$ (Duke-Dollars) zu. Ist ein steuerzahlender einwohner verheiratet, so wird der freibetrag auf 7500 D$ erhöht. Familien erhalten für jedes kind einen zusäztlichen freibetrag von 1000 D$ pro kind. Nachdem alle freibeträge vom Einkommen abgezogen worden sind, wird der rest mit 25% versteuert.


Es soll eine klasse "steuern" mit folgenden privaten eigenschaften geben:

+ einkommen, typ double
+ verheiratet, typ boolean
+ anzahlKinder, typ int


In der klasse steuern sind folgende öffentliche methoden eingebettet:

+ setEinkommen (überprüft den wert auf zulässigkeit (muss>=0 sein), im fehlerfall wird der wert auf 0 gesetzt)
+ setVerheiratet
+ setAnzahlKinder (überprüft den wert auf zulässigkeit, im fehlerfall wird der wert auf 0 gesetzt)
+ getEinkommen
+ getVerheiratet
+ getAnzahlKinder
+ getZuVersteuerndesEinkommen (errechnet das zu versteuernde einkommen)
+ getSteuern (errechnet aus dem zu versteuerndes einkommen die steuern (25%))
***************************************************************************************************

Ich hock jetz schon bald 2 stunden davor und stoß immer wieder auf neue probleme, und komme einfahc nicht zum ende!

Meine bisherige arbeit:

***************************************************************************************************
class Steuern


```
{
	private double einkommen;
	private boolean verheiratet;
	private int anzahlKinder;
	
	
	public void setEinkommen(double ek)
	{
		if(ek>=0)
		{
			einkommen=ek;
		}
		else
		{
			einkommen=0;
	 	}
	}
	
	public void setVerheiratet(boolean verh)
	{
		if(verheiratet=true)
		{
			double ek;
			ek=7500;
		}
		else
		{
		double ek;	
		verheiratet=false;
		ek=5000;
	 	}
	}
	
	public void setAnzahlKinder(int ak)
	{
			int i;
			for(i=1; 1<=ak; i++)
			{
				double newEk;
				newEk=ek+1000;
			}
	}


}
```
***************************************************************************************************
Ihr glaubt mir nicht wie dankbar ich euch wäre!!!!!

liebe grüße marco


----------



## Nova (10. Jul 2005)

Hallo,

Ich würde schonmal so anfangen:


```
{
   private double einkommen;
   private boolean verheiratet;
   private int anzahlKinder;
   
   
   public void setEinkommen(double ek)
   {
      if(ek>=0)
      {
         einkommen=ek;
      }
      else
      {
         einkommen=0;
       }
   }
   
   public void setVerheiratet(boolean verh)
   {
      verheiratet = verh;
   }
   
   public void setAnzahlKinder(int ak)
   {
         anzahlKinder = ak;
   }


}
```

Es ist sehr unübersichtlich wenn du das Einkommen veränderst!
a) Ändert sich das Einkommen ja gar nicht wenn er ein kind hat, sondern nur der Freibetrag und
b) wenn du nachträglich das Einkommen änderst stimmt die Bertechnung nicht mehr


In "getZuVersteuerndesEinkommen()" musst du dann nur eine simple Formel aufstellen die dir das Ergebnis berechnet.



mfg
Christian


----------



## hungary_88 (10. Jul 2005)

bin wieder etwas weiter gekommen nun bringt er mir fehler beim kompilieren ...


```
class Steuern
{
	private double einkommen;
	private boolean verheiratet;
	private int anzahlKinder;
	
	
	public void setEinkommen(double)
	{
		if(einkommen>=0)
		{
			einkommen=einkommen+5000
		}
		else
		{
			einkommen=0;
	 	}
	}
	
	public void setVerheiratet(boolean)
	{
		if(verheiratet=true)
		{
			einkommen=einkommen+2500;
		}
		else
		{	
			einkommen=5000;
	 	}
	}
	
	public void setAnzahlKinder(int ak)
	{
		if(ak>0)
		{
			int i;
			for(i=1; i<=ak; i++)
			{
				
				einkommen=einkommen+1000;
			}
		}
		else
			ak=0;
	}
	

}
```




jcreator fehlermeldungen:


C:\Java\Aufgabe Steuer\Steuern.java:8: <identifier> expected
        public void setEinkommen(double)
                                       ^
C:\Java\Aufgabe Steuer\Steuern.java:45: ')' expected
        }
         ^
C:\Java\Aufgabe Steuer\Steuern.java:8: missing method body, or declare abstract
        public void setEinkommen(double)
                    ^
3 errors

Process completed.


ich komm nich drauf, wo könnten die fehler liegen???


----------



## Nova (10. Jul 2005)

Hallo,


```
public void setEinkommen(double)
```
ist falsch! Es müsste z.B.

```
public void setEinkommen(double ek)
```
heißen!
(das gleiche für die anderen Methoden)

Du solltest dir nochmal genau anschauen was Methoden sind und wie man sie verwendet!



Aber wie gesagt:
So wie du es versuchst wird es nicht funktionieren!
In den Methoden
setEinkommen()
setAnzahlKinder()
setVerheiratet()
darfst du nur die Instanzvariablen setzen so wie ich es oben geschrieben habe!
Dann anhand dieser Werte den Freibetrag berechnen.
Damit kannst du nun den zu versteuernden Betrag ausrechnen und die Steuern ausgeben, fertig.


mfg
Christian


----------



## hungary_88 (10. Jul 2005)

soo das is der neuste code, jetz häng ich an der rechung, ich weis nicht wie ich in einer rechung auswählen kann, dass er diesen bestimmt rechenschritt nur durchführt wenn der eine befehl true ist !? heeeeeeelp


```
class Steuern
{
	private double einkommen;
	private boolean verheiratet;
	private int anzahlKinder;
	
		
	public void setEinkommen(double ek)
	{
		if(einkommen>=0)
		{
			ek=einkommen;
		}
		else
		{
			ek=0;
	 	}
	}
	
	public void setVerheiratet(boolean vh)
	{
		if(verheiratet=true)
		{
			vh=true;
		}
		else
		{	
			vh=false;
	 	}
	}
	
	public void setAnzahlKinder(int ak)
	{
		if(anzahlKinder>0)
		{
			int i;
			for(i=1; i<=anzahlKinder; i++)
			{
				
				einkommen=einkommen-1000;
			}
		}
		else
			einkommen=einkommen;
	}
	
	public void getEinkommen()
	{
		System.out.println("Das Einkommen betraegt mit abzuege der Freibeträge: "+einkommen+" D$");
	}
	
	public void getVerheiratet()
	{
		System.out.println("Verheiratet: "+verheiratet);
	}
	
	public void getAnzahlKinder()
	{
		System.out.println("Die Anzahl der Kinder betraegt: "+anzahlKinder);
	}
	
	public void getZuVersteuerndesEinkommen()
	{
		double zve;
		zve=einkommen
		System.out.println("Die Anzahl der Kinder betraegt: "+einkommen);
	}
	
	
}
```


----------



## bambi (10. Jul 2005)

Meinst Du sowas?

```
if (verheiratet) {
   einkommen - 7500;
} else {
   einkommen - 5000;
}
```
Boolean kann man einfach so abfragen oder sonst mit

```
if (verheiratet == true)
```
Falsch ist folgendes:

```
if (verheiratet = true)
```
das gibt einen Fehler, denn
1. wuerde es verheiratet den Wert true zuweisen und
2. meckert der Compiler, da es keinen boolean Wert zurueckgibt, der fuer das if verwendet werden kann.


----------



## Guest (10. Jul 2005)

ganz einfach:


```
boolean getVerheiratet () { return this.verheiratet; }
```


----------



## Nova (10. Jul 2005)

Soll das ein Witz sein?
Du baust jedesmal mehr Fehler ein!
Jetzt sind alle Zuweisungen falsch, z.B. statt ek=einkommen müsste einkommen=ek da stehen usw.
Statt if(verheiratet = true) müsste da if(vh) stehen usw.
Außerdem ziehst du immer noch Werte vom Einkommen ab, desshalb kannst du das Einkommen auch nicht ausgeben weil du es nicht rekonstruieren klannst.


Sorry, aber solangsam drängt sich mir der Verdacht auf das du uns vereppeln willst.


mfg
Christian


----------



## Nova (10. Jul 2005)

Bevor es ganz ausartet hier die Lösung: (ungetestet)


```
public class Steuern
{
   private double einkommen;
   private boolean verheiratet;
   private int anzahlKinder;
      
   public void setEinkommen(double ek){
      einkommen = ek;
      if(einkommen < 0){
         einkommen = 0;
      }
   }
   
   public void setVerheiratet(boolean vh){
      verheiratet = vh;
   }
   
   public void setAnzahlKinder(int ak){
      anzahlKinder = ak;
      if (anzahlKinder < 0){
         anzahlKindern = 0;
      }
   }
   
   public double getEinkommen(){
      return einkommen;
   }
   
   public boolean getVerheiratet(){
      retrun verheiratet;
   }
   
   public void getAnzahlKinder(){
      return anzahlKinder;
   }
   
   public double getZuVersteuerndesEinkommen(){
      double freibetrag = 5000;
      if (verheiratet){ 
           freibetrag = 7500;
      }
      freibetrag += 1000*anzahlKinder;
      return (einkommen-freibetrag);
   }

   public double getSteuern(){
      return (getZuVersteuerndesEinkommen()*0.25);   
   }
}
```




Was ist AIT?


mfg
Christian


----------



## stev.glasow (10. Jul 2005)

*verschoben*
Und nächstes mal bitte mit Aussagekräftigen Titel. Stell dir vor jeder würde "brauche Hilfe", "dringen", "habe ein Problem" oder ähnlches als Titel verwenden.


----------



## hungary_88 (10. Jul 2005)

Neeee ich will euch hier nich veräppeln!!! AIT hat man auf einem Technischen Gymnasium für Informationstechnik und bedeutet "Angewandte Informationstechnik" = Java. Ich bin im ersten Jahr und chekk noch recht wenig von der ganzen sache! aber danke für deine lösung, ich werde sie gleich mal testen!


----------



## ergoxx (10. Jul 2005)

Ich glaube dies ist jetzt richtig (mit Eclipse getestet) 

```
public class Steuern
{
   private double einkommen;
   private boolean verheiratet;
   private int anzahlKinder;
     
   public void setEinkommen(double ek){
      einkommen = ek;
      if(einkommen < 0){
         einkommen = 0;
      }
   }
   
   public void setVerheiratet(boolean vh){
      verheiratet = vh;
   }
   
   public void setAnzahlKinder(int ak){
      anzahlKinder = ak;
      if (anzahlKinder < 0){
         anzahlKinder = 0;
      }
   }
   
   public double getEinkommen(){
      return einkommen;
   }
   
   public boolean getVerheiratet(){
      return verheiratet;
   }
   
   public int getAnzahlKinder(){
      return anzahlKinder;
   }
   
   public double getZuVersteuerndesEinkommen(){
      double freibetrag = 5000;
      if (verheiratet){
           freibetrag = 7500;
      }
      freibetrag += 1000*anzahlKinder;
      return (einkommen-freibetrag);
   }

   public double getSteuern(){
      return (getZuVersteuerndesEinkommen()*0.25);   
   }
}
```


----------



## hungary_88 (10. Jul 2005)

*freeeeeeeeu*  :lol:   :applaus: 

So leute, NUR dank euch hab ich es geschafft, ich hab die komplette aufgabe fertig!!!! Mein herzlichstes dankeschön an alle!!!! Hier das Ergebnis:



Klasse Steuern:




```
class Steuern
{
	private double einkommen;
	private boolean verheiratet;
	private int anzahlKinder;
	
		
	public void setEinkommen(double einkommen)
	{
		if(einkommen>=0)
		{
			this.einkommen = einkommen;
		}
		else
		{
			this.einkommen=0;	
		}
	}
	
	public void setVerheiratet(boolean verheiratet)
	{
		this.verheiratet = verheiratet;
	}
	
	public void setAnzahlKinder(int anzahlKinder)
	{
			this.anzahlKinder = anzahlKinder;
	}
	
	public void getEinkommen()
	{
		System.out.println("Ihr Einkommen betraegt: "+einkommen+" D$");
	}
	
	public void getVerheiratet()
	{
		System.out.println("Verheiratet: "+verheiratet);
	}
	
	public void getAnzahlKinder()
	{
		System.out.println("Anzahl der Kinder: "+anzahlKinder);
	}
	
	public double getZuVersteuerndesEinkommen()
	{
      double freibetrag = 5000;
      
      if (verheiratet==true)
      {
           freibetrag = 7500;
      }
      
      freibetrag += 1000 * anzahlKinder;
      return (einkommen-freibetrag);
   } 
	
	public double getSteuern()
	{
		return (getZuVersteuerndesEinkommen()*0.25);
	}
	
}
```





Das Hauptprogramm:




```
import javax.swing.*;
import java.io.*;

public class HauptSteuern
{
	public static void main(String args[]) throws IOException
	{
		
		 BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
		 
		 
		 System.out.println("Dieses Programm errechnet die Steuern unter abhaenigkeit des Einkommens eines Buergers aus dem JAVA Land:");
		 Steuern steuern = new Steuern();
		 String str,st;
		 
		 do
		 { 
		 	st=JOptionPane.showInputDialog("Geben Sie bitte Ihr Einkommen ein: ");
		 	steuern.setEinkommen(Double.parseDouble(st));
		
		 	str=JOptionPane.showInputDialog("Geben Sie bitte die Anzahl Ihrer Kinder ein: ");
		 	steuern.setAnzahlKinder(Integer.parseInt(str));
		 
		    str=JOptionPane.showInputDialog("Sind Sie Verheiratet? (j/n) ");
		 
		 	if(str.charAt(0)=='j'||str.charAt(0)=='J')
   	     	{
   	     		steuern.setVerheiratet(true);
   	     	}
   	     	else
   	     	{
   	     		steuern.setVerheiratet(false);
   	     	}
   	     
			System.out.println(" ");
			System.out.println(" ");
			System.out.println(" ");
			steuern.getEinkommen();
			System.out.println(" ");
			steuern.getVerheiratet();
			System.out.println(" ");
			steuern.getAnzahlKinder();
			System.out.println(" ");
			System.out.println("Das zu versteuernde Einkommen betraegt: "+steuern.getZuVersteuerndesEinkommen()+" D$");
			System.out.println(" ");
			steuern.getSteuern();
	   	    System.out.println("Die Steuern betragen: "+steuern.getSteuern()+" D$");
	   	     
	   	    str=JOptionPane.showInputDialog("Wollen Sie dieses Programm erneut starten? (j/n)");
	   	      
   	     
   	 	 }
   	 	 
   	     while(str.charAt(0)=='j'||str.charAt(0)=='J');
     		 if(str.charAt(0)=='n'||str.charAt(0)=='N');
     		    {
   			
		   				System.out.println(" ");
		   				System.out.println(" ");
		   				System.out.println(" ");
			        	System.out.println("Programmende Steuern");
			        	System.out.println(" ");
			        	System.exit(0);
			    }

   	}     	
}
```



Nochmal vielen dank an alle, so besuche ich dieses forum gerne wieder! Vllt auch mal um anderen zu helfen! Aber zur zeit hab ich nen Riesen Klausurenstress ..

bis dann, 

liebe grüße marco

ps.: leider weiss ich nicht wie man dieses kleine häkchen setzt!


----------



## bambi (10. Jul 2005)

Geh einfach in den Thread und da ist unten (links) ein Button, den Du klicken kannst...


----------

