Kann man den Code verkürzen/verbessern (Java Code)?

3 Antworten

war die Aufgabe eine Schleife zu benutzen? Weil mit deiner simplen Aufgabenstellung braucht man die nichtmal.. einfach die Rechnung anpassen.

Peppvin 
Fragesteller
 05.09.2022, 04:06

Ja, loops war unser Thema.

0

Viel kürzer nicht unbedingt, aber ein bisschen anders. Ich würde z.B. eine for-Schleife und keine while-Schleife benutzen, weil ja am Anfang der Schleife bekannt ist, wie oft sie läuft. Und du brauchst am Ende auch nicht prüfen, ob die Schleife dreimal gelaufen ist, sondern gibst einfach außerhalb der Schleife das Ergebnis aus.

import java.util.Scanner;

public class Schulden {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		// Frage stellen, damit der Benutzer auch weiß, dass er hier was eingeben soll
		System.out.print("Bitte Schuldenbetrag eingeben: ");
		
		// Betrag als Kommazahl (alternativ als int, aber mal 100 gerechnet, also als Cent-Betrag) einlesen.
		// Ansonsten stimmt die Berechnung später nicht
		double amount = scanner.nextDouble();
		double altAmount = amount; // Für alternatives Beispiel
		scanner.close();
		
		// Lieber eine for-Schleife anstatt einer while Schleife benutzen
		// (
		for (int months = 0; months < 3; ++months) {
			amount -= 0.1 * amount;
		}
		
		// Die Überprüfung, ob wirklich 3 Monate berechnet wurden 
		// (also in deinem Beispiel, ob x = 3 ist)
		// ist nicht nötig
		System.out.printf("Nach drei Monaten sind noch %.2f € Schulden übrig.%n", amount);
		
		// Alternativ kann man die Schulden auch ohne Schleife mathematisch berechnen
		System.out.printf("Alternative Berechnung: %.2f €%n", altAmount * Math.pow(0.9, 3));
	}
}

Oder ganz kurz:

public class Schulden {
	public static void main(String[] args) {
		System.out.print("Bitte Schuldenbetrag eingeben: ");
		System.out.printf("Nach drei Monaten sind noch %.2f € Schulden übrig.%n", new java.util.Scanner(System.in).nextDouble() * Math.pow(0.9, 3));
	}
}
double amount = 10.0;
int x = 0;
while (x++ < 3) { // x wird erst nach dem vergleich incrementiert 
  amount -= 0.10 * amount;
}
System.out.println(amount);

output : 7.289999999999999

oder

double amount = 10.0;
int x = 0;
while (x++ < 3) { // x wird erst nach dem vergleich incrementiert 
  amount *= 0.90 ;
}
System.out.println(amount);

output : 7.29