Kann man Bedingungen auch ohne Schleifen prüfen?

Status
Nicht offen für weitere Antworten.
M

Matze82

Gast
Hi!
Ich habe hier ein kleines Programm mit dem eine Wochenabrechnung erstellt wird. Ich hatte folgende Vorgaben:
Eine Arbeitsstunde 50 Euro. Wenn jemand mehr als 40 Stunden arbeitet werden die Überstunden mit 75 Euro vergütet.
Für jeden Meter Kabel werden 3 Euro berechnet. Ab 500 Meter Kabel (Kabeltrommel) kostet 1 Meter Kabel nur 2 Euro.

Hier ist das Programm weelches ich geschrieben habe. Funktioniert auch soweit, aber ich habe mir überlegt, dass man es vielleicht auch ein bisschen besser schreiben könnte. Habe gehört, dass man es auch ohne jegliche Schleifen machen kann. Also keine if, while, for schleifen oder switch anweisungen. Könnte mir das jemand helfen? Danke schonmal im vorraus.

METHODENAUFRUF:

Code:
package pr1.Basics;

public class Materialkosten {
	private static final double KOSTEN_EURO_JE_1M_KABEL          =  3.00;
	private static final double KOSTEN_EURO_JE_500M_KABELTROMMEL =  2.00;
	
	private static final double KOSTEN_EURO_PRO_STUNDE           = 50.00;
	private static final double KOSTEN_EURO_AB_40_STUNDEN        = 75.00;
		
	public static double kostenStundenFuerZeit(double stunden) {
		if (stunden <= 40){ 
			stunden  = KOSTEN_EURO_PRO_STUNDE * stunden;
		}else {
			stunden  = 40 * KOSTEN_EURO_PRO_STUNDE + KOSTEN_EURO_AB_40_STUNDEN * (stunden-40);
		}
		
		return stunden;
		
	}

	public static double kostenFuerMaterial(double material) {
		if (material<= 499){
			material = material * KOSTEN_EURO_JE_1M_KABEL;
		}else {
			material = material * KOSTEN_EURO_JE_500M_KABELTROMMEL;
		}
		return material;
	}

}

METHODENDEKLARATION:

Code:
package pr1.Basics;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.Locale;

public class MaterialkostenTest {
	
	public static void main (String[] args){
			Abrechnung ();
	}
	public static void Abrechnung (){
		// Alle Ein- und Ausgaben im US-Format (Dezimalpunkt)
		Locale.setDefault(Locale.US);
		
		String Eingabe = "40.00 400.00          70.00 600.00";
		Scanner in = new Scanner (Eingabe);
		PrintWriter out = new PrintWriter (System.out, true);
		out.println ("Kostenabrechnung");
		out.println ();
		out.println("Das Programm startet!");
		out.println();
		while (in.hasNext()){
			double stunden = in.nextDouble();
			double material = in.nextDouble();
			double KostenStunden = Materialkosten.kostenStundenFuerZeit(stunden);
			double KostenMaterial = Materialkosten.kostenFuerMaterial(material);
			double GesamtKosten = KostenStunden + KostenMaterial;
			out.println("Die Kosten für " + stunden + " Stunden und " + material + " Meter Kabel betragen:");
			out.println();
			out.println(stunden + " Stunden kosten: " + KostenStunden  + " Euro");
			out.println();
			out.println(material + " Meter Kabel kostet: " + KostenMaterial + " Euro");
			out.println();
			out.println("Kosten Gesamt: " + GesamtKosten + " Euro");
			out.println();
		}
	}	
}
 

Landei

Top Contributor
1) So ein Blödsinn, if ist keine Schleife
2) Eingabeparameter (stunden, material) zu verändern und dann als return-Wert zu verwenden ist (gelinde gesagt) verwirrend. Willst du "Variablen sparen"? Vergiß das ganz schnell!
3) Es geht auch so (ober das hübscher ist, ist Geschmackssache):
Code:
   public static double kostenStundenFuerZeit(double stunden) { 
      return (stunden <= 40)
         ? KOSTEN_EURO_PRO_STUNDE * stunden
         :  40 * KOSTEN_EURO_PRO_STUNDE + KOSTEN_EURO_AB_40_STUNDEN * (stunden-40); 
   } 

   public static double kostenFuerMaterial(double material) { 
      return (material<= 499) 
         ? material * KOSTEN_EURO_JE_1M_KABEL
         : material * KOSTEN_EURO_JE_500M_KABELTROMMEL; 
   }
 
M

Matze82

Gast
Danke! ;) Jo mal schaun... ich finds ehrlich gesagt ein bisschen hübscher, weiß aber nicht genau was dieses Fragezeichen oder die Doppelpunkte sind. Fragezeichen = if und Doppelpunkt = else?
 

Landei

Top Contributor
?: ist der sogenannte "ternäre Operator"
Code:
wert = bedingung ? wennBedingungRichtigDieserWert : wennBedingungFalschDieserWert;
Das Ganze funktioniert also ähnlich wie ein if-else, liefert aber einen Wert zurück (kann also z.B. auch in Parameterlisten verwendet werden)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
T Mehrere if bedingungen ohne & Java Basics - Anfänger-Themen 2
B If Bedingungen kombinieren? Java Basics - Anfänger-Themen 5
B Semaphoren in Abhängigkeit an Bedingungen richtig setzen Java Basics - Anfänger-Themen 3
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
B Collections.sort mit zwei Bedingungen? Java Basics - Anfänger-Themen 4
D Wert des Arrays unter Bedingungen ändern Java Basics - Anfänger-Themen 1
A Bedingungen für Parameterwerte Java Basics - Anfänger-Themen 7
J Unit Testing mit vielen Bedingungen - Best Practice? Java Basics - Anfänger-Themen 9
S mehrere If Bedingungen Java Basics - Anfänger-Themen 5
U Schleife mit mehreren Bedingungen ? Java Basics - Anfänger-Themen 29
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
E Bedingungen abkürzen Java Basics - Anfänger-Themen 13
S Erste Schritte Begrüßung mit if-Bedingungen Java Basics - Anfänger-Themen 7
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
G While schleife mit 2 Bedingungen geht nicht! Java Basics - Anfänger-Themen 15
H Bedingungen miteinander verknüpfen Java Basics - Anfänger-Themen 2
J if Bedingungen verknüpfen Java Basics - Anfänger-Themen 8
K Bedingungen else Java Basics - Anfänger-Themen 7
M Variablen Switch Bedingungen Java Basics - Anfänger-Themen 12
W for Schleife mit zwei bedingungen ? Java Basics - Anfänger-Themen 6
F Bedingungen mit Abfragen verknüpfen Java Basics - Anfänger-Themen 7
W Was tun die Operatoren ? und : (Bedingungen) Java Basics - Anfänger-Themen 15
T Scanner für char-wert/ if mit 2 bedingungen? Java Basics - Anfänger-Themen 5
Q If-Abfrage mit mehreren Bedingungen Java Basics - Anfänger-Themen 6
reno Bedingungen in Konfigurationsdatei Java Basics - Anfänger-Themen 2
K Bedingungen mit "und" trennen ? Java Basics - Anfänger-Themen 2
J Performance Vergleich von if-Abfragen mit mehreren Bedingungen Java Basics - Anfänger-Themen 9
C switch-case mit bedingungen? Java Basics - Anfänger-Themen 5
NightmareVirus 2 Abbruch Bedingungen in einer for-schleife Java Basics - Anfänger-Themen 2
G Schleifen mit mehreren Bedingungen Java Basics - Anfänger-Themen 4
G Mehrere If Bedingungen Java Basics - Anfänger-Themen 11
A Mehrere if Bedingungen untereinander? Java Basics - Anfänger-Themen 4
J if-Bedingungen in C und Java Java Basics - Anfänger-Themen 4
G if-Abfrage mit zwei Bedingungen Java Basics - Anfänger-Themen 6
C zwei Bedingungen in einer if Anweisung Java Basics - Anfänger-Themen 1
richis-fragen JTable sowohl Spaltennamen wie auch Spaltenbeschriftungen Java Basics - Anfänger-Themen 7
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
luggas89 If else auch mit unterschiedlichen Antworten Java Basics - Anfänger-Themen 5
berserkerdq2 sqllite in Java, wenn ich mache select count(*) ..., erhalte ich dann nur die gezählte Anzahl oder werden auch die Tabellen ausgegeben? Java Basics - Anfänger-Themen 2
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
W Methoden aufrufen - auch klassenübergreifend? Java Basics - Anfänger-Themen 9
I Ausgabe nicht nur senkrecht sondern auch waagerecht. Java Basics - Anfänger-Themen 2
S Methoden - Warum int wenn auch void? Java Basics - Anfänger-Themen 3
G Wofür benötigt man die Umgebungsvariablen sowohl in Windows 10 als auch in Mac OS Catalina Java Basics - Anfänger-Themen 19
C Methoden Java ist auch eine Insel Listing 2.40 Recursion Java Basics - Anfänger-Themen 7
J Projektideen für Java (auch gehobeneres Niveau)? Java Basics - Anfänger-Themen 16
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
D auch negative Zahlen sotieren Java Basics - Anfänger-Themen 18
B Email versand - aber akzeptiert auch falscher Username und Passwort??? Java Basics - Anfänger-Themen 1
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
J Die Y Koordinate von einer anderen Klasse auch verändern Java Basics - Anfänger-Themen 1
A Zahlenraten auch in for-Schleife darstellbar? Java Basics - Anfänger-Themen 32
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
F Erste Schritte Java ist auch eine Insel kaufen? Java Basics - Anfänger-Themen 2
P Kann ich Java - Programme auch ohne Editor öffnen? Java Basics - Anfänger-Themen 70
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
J Keyboard Event auch ohne Fokus mitbekommen Java Basics - Anfänger-Themen 2
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
A Fehlermeldung Unklar, google hilft auch nicht weiter Java Basics - Anfänger-Themen 2
S Java Counter: nur 1 mal hochzählen auch wenn Abfrage mehrmals zutrifft. Java Basics - Anfänger-Themen 1
D Türme von Hanoi in "Java ist auch eine Insel" Java Basics - Anfänger-Themen 4
V wie kann man am einfachsten für ein Element der JavaFX die Umrandung aktiwieren ? auch ohne css ? Java Basics - Anfänger-Themen 4
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Java Basics - Anfänger-Themen 4
M Ist die Hamcrest Bibliothek auch schon in Junit 4.11 verfügbar? Java Basics - Anfänger-Themen 1
R AES Key 256 Illegal Key Size auch bei Änderung der Policy Java Basics - Anfänger-Themen 3
B Kann man Windowbuilder auch mit Juno (also Eclipse 4.2) nutzen? Java Basics - Anfänger-Themen 1
C String Objekt erstellen auch ohne new() möglich? Java Basics - Anfänger-Themen 5
DaniSahne96 Frage zu Java ist auch eine Insel Java Basics - Anfänger-Themen 12
C Input/Output Primzahlenzerlegung -> könnte man Zahlen auch einlesen? Java Basics - Anfänger-Themen 4
T Bin Anfänger ... das Thema auch ? Java Basics - Anfänger-Themen 10
G JFrame nur ein mal öffnen, auch beim mehrmaligem Betätigen Java Basics - Anfänger-Themen 11
M Swing Klasse auch per Kommandozeile starten? Java Basics - Anfänger-Themen 2
J Geldberechner(aus Java ist auch eine Insel) Java Basics - Anfänger-Themen 6
F Können Klasse auch Werte liefern? Java Basics - Anfänger-Themen 3
J Kann man auch alles in einer Klasse schreiben? Java Basics - Anfänger-Themen 2
G Erste Schritte JAVA ist auch eine Insel Java Basics - Anfänger-Themen 7
T Collections Werte aus einer HashMap auslesen, oder gehts auch einfacher ? Java Basics - Anfänger-Themen 6
D Klassen Programm funktionert - aber auch ökonomisch? Java Basics - Anfänger-Themen 23
S KeyListener aktiv auch wenn minimiert? Java Basics - Anfänger-Themen 4
S Liste aller Partitionen (auch "unmounted") Java Basics - Anfänger-Themen 2
E Programm auch auserhalb von Eclipse nutzen? Java Basics - Anfänger-Themen 3
Hindi93 Java is auch ne Insel CD Java Basics - Anfänger-Themen 8
A JFormattedTextField Zahleneingabe auch mit beginnender 0 Java Basics - Anfänger-Themen 4
J Getter und Setter auch intern benutzen - guter Stil? Java Basics - Anfänger-Themen 31
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
D BETAVERT aus Excel auch in Java? Java Basics - Anfänger-Themen 4
K 50 errormeldungen- komme auch nach vielen Nachmittagen nicht weiter. bitte helfen Java Basics - Anfänger-Themen 39
J Instanzvariable auch in erbenden klassen Java Basics - Anfänger-Themen 4
T Frage aus dem Buch JAVA ist auch eine Insel Java Basics - Anfänger-Themen 11
D Kann noch fast nichts, funktioniert auch fast nichts! Java Basics - Anfänger-Themen 8
T Sind Kontrollflussanweisungen auch Methoden? Java Basics - Anfänger-Themen 5
P Gibts auch Triple? Java Basics - Anfänger-Themen 9
D runden ohne math! (zur not auch mit) Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben