Anfänger braucht Rat

shutakku

Ensign
Registriert
Juni 2016
Beiträge
140
Servus, versuche mich in Java reinzufuchsen und habe folgendes Zwecks Übung geschrieben. Mein Problem ist: Unten bei den if und else Sätzen habe ich zwei if-konditionen und eine else-kondition. wenn nun die erste kondition eintrifft, also wieviel == 0 drückt er aus was er ausdrücken soll, aber außerdem die else-kondition. Ich nehme an ich habe dort was falsch gesetzt. Danke im Voraus und habt erbarmen :D
Gegenüber vorschlägen was ich beser machen oder leichter ausdrücken könnte bin ich offen.
Code:
import java.util.Scanner;	

class banana{ 
		public static void main ( String args []) { 
			
			Scanner typ = new Scanner (System.in);
			int erste, zweite, antwort, gegessen, eingeladen, uebrig, dort, wieviel;
			System.out.println ("wieviele Bananen willst du? "); 
			erste = typ.nextInt();
			System.out.println ("wieviele Birnen willst du?");
			zweite = typ.nextInt (); 
			System.out.println ("Wieviele Fruechte willst du essen?");
			gegessen = typ.nextInt ();
			antwort = erste + zweite;
			System.out.print("du willst insgesamt ");
			System.out.print(antwort);
			System.out.println(" Früchte.");
			System.out.print("Nachdem du ein par gegessen hast bleiben ");
			System.out.print(antwort - gegessen);
			System.out.println(" uebrig");
			System.out.println("Nun was anderes. Angenommen du laedst Freunde ein und willst mit denen zusammen deine Fruechte essen, wieviele Freunde wuerdest du einladen?");
			eingeladen = typ.nextInt ();
			dort = eingeladen + 1;
			System.out.print ("Mit dir waert ihr also "); System.out.print(dort); System.out.println(" Leute"); System.out.print("Nachdem ihr alle zugeschlagen habt bleiben ");
			uebrig = antwort % dort;
			wieviel = antwort / dort;
			System.out.print (uebrig);
			System.out.println(" Fruechte uebrig. ");
			if (wieviel == 0) {
				System.out.print ("Somit hatte niemand eine Frucht");}
			if (wieviel == 1) {
				System.out.print("Jeder hatte dann eine Frucht");
			
			}
			else {
				System.out.print ("Jeder hatte somit"); 
				System.out.print(wieviel);
				System.out.print("Fruechte");
			}
		
		}
		
	}

_________________________
wieviele Bananen willst du?
10
wieviele Birnen willst du?
10
Wieviele Fruechte willst du essen?
15
du willst insgesamt 20 Früchte.
Nachdem du ein par gegessen hast bleiben 5 uebrig
Nun was anderes. Angenommen du laedst Freunde ein und willst mit denen zusammen deine Fruechte essen, wieviele Freunde wuerdest du einladen?
20
Mit dir waert ihr also 21 Leute
Nachdem ihr alle zugeschlagen habt bleiben 20 Fruechte uebrig.
Somit hatte niemand eine FruchtJeder hatte somit0Fruechte
 
ist ja auch klar. Das else bezieht sich auf das if (wieviel==1) nicht auf das vorherige.
du müsstest also "ein else if" benutzen bei der wieviel==1.
if
else if
else
 
Vielen Dank. :D
Wie heißen diese Konditionen? Muss man ja irgendwo Nachschlagen können. Also wonach muss ich suchen
 
Wie soll das schon heißen? if else statements halt oder so. :D Das ist nichts java spezifisches sondern in jeder höheren Programmiersprache absoluter Standard.

Btw: Du kannst deinen Code viel kürzer schreiben, wenn du deine ganzen Strings einfach mit + verbindest und nicht jedes mal ein neues Print ausführst.
Also statt:
System.out.print ("Jeder hatte somit");
System.out.print(wieviel);
System.out.print("Fruechte");
lieber:
System.out.print ("Jeder hatte somit " + wieviel + " Fruechte");
 
Jepp, das wäre auch noch eine Möglichkeit und ab mehr als 3 Fällen auch die deutlich bessere Lösung. Ich wollte den TE aber nicht überfordern, da er ja nicht mal primitive If-Anweisungen beherrscht ;) Die sollten zumindest aus dem FF kommen, bevor man irgendwas neues dazu lernt.
 
Ich auch nicht, sonst hätte ich StringBuffer erwähnt anstatt der Verkettung mit Plus Zeichen (umkopieren im RAM, da Strings immutable sind) :D
 
Dass "+" nicht das Gelbe vom Ei ist, ist mir auch klar :D Aber sicherlich besser als 30 Zeilen für die Ausgabe und für einen Laien noch recht gut nachvollziehbar.

Es gäbe noch zig Möglichkeiten diesen Quelltext schöner und effizieter zu machen. Aber belassen wirs doch mal bei den Basics ;) Ich glaube die sollte der TE erstmal verinnerlichen bevor man "schönen" Code macht.

@TE: "java ist auch eine Insel" ist ein gutes Werk, wenn man java lernen will. Da ist auch sehr viel detailiert erklärt.
 
Zuletzt bearbeitet:
wieviel kann auch deutlich größer werden als 1 wenn ich das richtig sehe, den Fall fängst Du nicht ab. Lädst Du z.B. nur einen ein bei 20 Früchten wäre wieviel 10. Geschickt/besser ist es, wenn Du in 2 Bereiche aufsplitten willst mit >, >=, < oder <= zu arbeiten.

Diese Konditionen etc. nennen sich Kontrollstrukturen und sind quasi in jedem Tutorial dokumentiert:

http://www.java-tutorial.org/kontrollstrukturen.html

Müsste auch in der offiziellen Doku beschrieben sein. Das sind die Basics, auf die jede höhere Programmiersprache aufbaut, hast Du das einmal verstanden kannst Du das überall benutzen, manchmal unterscheidet sich zwar die Syntax, aber das Prinzip ist immer gleich.

Edit: Hier die offizielle Doku: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/flow.html

Gewöhn Dich schon mal daran viel Doku zu lesen und zu googlen ;)
 
Zuletzt bearbeitet:
Die Idee mit dem plus hatte ich auch, habe aber ein Komma statt plus geschrieben x(
Ihr habt mir echt weitergeholfen
 
Ozzy83 schrieb:
Ich auch nicht, sonst hätte ich StringBuffer erwähnt anstatt der Verkettung mit Plus Zeichen (umkopieren im RAM, da Strings immutable sind) :D
Wäre in dem Fall auch nicht nötig gewesen. Der Kompiler wird hier automatisch einen StringBuilder einsetzen. Grundsätzlich muss der StringBuilder gar nicht so häufig explizit verwendet werden. Man sollte aber natürlich wissen wann er wichtig ist. Krasse Ausnahmen wären ja zB String Verkettungen in Schleifenaufrufen.
PS: Die Verkettung von statischen Strings kann der Kompiler übrigens vor der Laufzeit durchführen, sofern man dies mittels "+" Operator schreibt. Das Verwenden des StringBuilders kann also in Ausnahmefällen sogar Laufzeit kosten.:D
 
Zuletzt bearbeitet:
Zurück
Oben