# Rechenprogramm/schleife



## Unikate (5. Nov 2009)

hi.

ich will das am ende meines programmes 

char schleife;
boolean yes,no;

System.out.println("eine neue rechnung durchführen?");
schleife=(char)readInt();

if (schleife=yes)
 PROGRAMM NEUSTARTEN(Befehl?)

if (schleife=no)
 System.exit(0);


was mach ich falsch????
danke!!!!


----------



## SlaterB (5. Nov 2009)

if (schleife=yes)
if (schleife==yes)

yes und no sind nicht initialisierte Variablen, die kannst du nicht benutzen, 
als boolean kannst du denen entweder true oder false zuweisen,

welcher char soll aber == einem boolean sein?
was soll der User überhaupt eintippen, 'y' oder 'n'?
dann musst du mit entsprechenden chars vergleichen,
was passiert eigentlich wenn weder das eine noch das andere eingetippt wird?


----------



## Unikate (5. Nov 2009)

kann ich yes und no dann datentyp char oder eher string zuweisen?
was bedeutet denn das doppel gleichzeichen (==)???


----------



## Unikate (5. Nov 2009)

String schleife; 

  schleife=In.readString();

	   if (schleife=="y") {
		   Runtime.getRuntime();
	   }
	   if (schleife=="n"){
		   System.exit(0);
	   }


	}	


so?


----------



## eRaaaa (5. Nov 2009)

strings mit equals vergleichen

if("y".equals(schleife))...


----------



## Unikate (5. Nov 2009)

ich glaube dadurch dass ich erst 3 wochen programmiere in der uni, fehlen mir einfach die grundkenntnisse um sowas zu schnallen oder eigene ideen einzubauen


----------



## eRaaaa (5. Nov 2009)

ehrlich gesagt weiss ich ganricht was du genau machen möchtest (irgendwie ist der satz unvollständig ?? )....





> ich will das am ende meines programmes ......was mach ich falsch????



beschreib doch nochmal was du machen möchtest
(also was soll der user eingeben, was soll dann passieren etc.)


----------



## Unikate (5. Nov 2009)

Ziel: bruttopreis in cent pro kg eingeben und grammanzahl.
das ganze umrechnen in euro pro kilo
am ende des programmes will ich dass der user eine eingabe "y" oder "n" macht , ob er ein erneute rechnung durchführen will.wenn ja, programm wird erneut von oben abgearbeitet. wenn nein, console beenden/programm beenden



public class Bananen {

	//konstante Zahl
	public static float steuer = 1.07F;								

	public static void main (String args[]) {

		//Deklaration von Variablen
	   int bruttokilopreis,gewicht;									
	   float bruttopreis, nettopreis;
	   String schleife;

	   //Wert einlesen
	   System.out.println("Geben Sie den Bruttopreis pro kg in Cent ein: "); 
	   bruttokilopreis= In.readInt();

	   if (bruttokilopreis<0){
		   System.exit(0);
	   }

	   System.out.println("Geben Sie das Gewicht in Gramm ein: ");
	   gewicht= In.readInt();										

	   //Umrechnung Cent -> €; g -> Kg
	   bruttopreis= (bruttokilopreis/100F) * (gewicht/1000F);

	   //Rundung; Komma um 2 Stellen nach rechts verschieben
	   bruttopreis= Math.round (bruttopreis*100);		
	   bruttopreis/=100;	

	   // Ausgabe
	   System.out.println("Der Bruttopreis beträgt: " + bruttopreis  + " Euro");

	   // Steuer vom Bruttopreis rausrechnen
	   steuer= bruttopreis / steuer;								
	   steuer= Math.round(steuer*100);
	   steuer/=100;
	   steuer= bruttopreis - steuer;								
	   steuer=Math.round(steuer*100);
	   steuer/=100;

	   //Ausgabe
	   System.out.println("Die Mehrwertsteuer beträgt: " + steuer + " Euro");

	   //Subtraktion
	   nettopreis= bruttopreis-steuer;
	   nettopreis=Math.round(nettopreis*100);
	   nettopreis/=100;

	   //Ausgabe
	   System.out.println("Der Nettopreis beträgt: " + nettopreis + " Euro");

	   //Programmende oder Neustart
	   System.out.println("Wollen Sie eine neue Rechnung durchführen?");

	   schleife =In.readString();

	   if ("y".equals(schleife)) {
		   Runtime.getRuntime();
	   }
	   if ("n".equals(schleife)) {
		   System.exit(0);

	   }

	}	

}


----------



## eRaaaa (5. Nov 2009)

gibt sicherlich jetzt mehrere möglichkeiten, würde in dem fall vllt einfach while-schleifen nutzen  (unschön ??? ) 

```
public class Bananen {

//konstante Zahl
public static float steuer = 1.07F;

public static void main(String[] args) {
		// Deklaration von Variablen
		int bruttokilopreis, gewicht;
		float bruttopreis, nettopreis;
		Scanner in = new Scanner(System.in);
		while (true) {
			boolean wrongInput = true;
			// Wert einlesen
			System.out
					.println("Geben Sie den Bruttopreis pro kg in Cent ein: ");
			bruttokilopreis = in.nextInt();

			if (bruttokilopreis < 0) {
				System.exit(0);
			}

			System.out.println("Geben Sie das Gewicht in Gramm ein: ");
			gewicht = in.nextInt();

			// Umrechnung Cent -> €; g -> Kg
			bruttopreis = (bruttokilopreis / 100F) * (gewicht / 1000F);

			// Rundung; Komma um 2 Stellen nach rechts verschieben
			bruttopreis = Math.round(bruttopreis * 100);
			bruttopreis /= 100;

			// Ausgabe
			System.out.println("Der Bruttopreis beträgt: " + bruttopreis
					+ " Euro");

			// Steuer vom Bruttopreis rausrechnen
			steuer = bruttopreis / steuer;
			steuer = Math.round(steuer * 100);
			steuer /= 100;
			steuer = bruttopreis - steuer;
			steuer = Math.round(steuer * 100);
			steuer /= 100;

			// Ausgabe
			System.out.println("Die Mehrwertsteuer beträgt: " + steuer
					+ " Euro");

			// Subtraktion
			nettopreis = bruttopreis - steuer;
			nettopreis = Math.round(nettopreis * 100);
			nettopreis /= 100;

			// Ausgabe
			System.out.println("Der Nettopreis beträgt: " + nettopreis
					+ " Euro");

			// Programmende oder Neustart
			while (wrongInput) {
				System.out
						.println("Wollen Sie eine neue Rechnung durchführen? 'y' oder 'n' ");
				String input = in.next();
				if ("n".equals(input))
					System.exit(0);
				else if ("y".equals(input))
					wrongInput = false;
				else System.out.println("Falsche Eingabe");
			}
		}

	}
}
```


----------



## Unikate (5. Nov 2009)

danke erstmal ich schau mir gleich mal an was die einzelnen schritte bedeuten
while schleifen hatten wir noch nich

was ist denn"Scanner in = new Scanner(System.in);"???


----------



## eRaaaa (5. Nov 2009)

ahhh, das hatte ich eingebaut zum testen. habs vergessen wieder abzuändern. du kannst eig. dein [c]In.readInt();[/c] wieder einbauen wenn du magst  das ist nur leider keine standard java klasse, daher gings bei mir halt nicht. das wird eine hilsklasse von deiner uni/schule etc. sein

in.nextInt(); also wieder zu In.readInt();
ändern


----------



## Unikate (5. Nov 2009)

ok   gut also verwirrung wieder weg
habs wieder ersetzt und es geht alles. danke du held


----------

