Hallo,
ich habe eine Hausaufgabe in Informatik auf bekommen und zwar soll ich ein gegebenes Programm in Klassen unterteilen jedoch hatten wir das Thema noch nicht und ich frage mich wie ich das angehen soll.
Aufgabe:
Die Funktionalität des Programms wird von zwei Klassen ihres Pakets de.graf.zahl bereitgestellt. Erwartet wird die Klasse IO für Ein/Ausgabefunktionen und Knuddelig für Unterprogramme, die direkt mit knuddeligen Zahlen arbeiten. Das Hauptprogramm liegt weiterhin im unbenannten (default) Paket
Hier der gegebene Code:
ich habe eine Hausaufgabe in Informatik auf bekommen und zwar soll ich ein gegebenes Programm in Klassen unterteilen jedoch hatten wir das Thema noch nicht und ich frage mich wie ich das angehen soll.
Aufgabe:
Die Funktionalität des Programms wird von zwei Klassen ihres Pakets de.graf.zahl bereitgestellt. Erwartet wird die Klasse IO für Ein/Ausgabefunktionen und Knuddelig für Unterprogramme, die direkt mit knuddeligen Zahlen arbeiten. Das Hauptprogramm liegt weiterhin im unbenannten (default) Paket
Hier der gegebene Code:
Java:
import java.util.Scanner;
public class Blatt5Aufgabe1 {
public static void main(String[] args) {
// Scanner anlegen
Scanner sc = new Scanner(System.in);
System.out.println("Hallo Graf Zahl. Bitte geben Sie die Unter- und "
+ "Obergrenze für die Suche nach knuddeligen Zahlen ein: ");
// Zahlen einlesen
int start = sc.nextInt();
int end = sc.nextInt();
// Solange die Eingabe wiederholen wie diese falsch ist
while (pruefeEingabe(start, end) != null) {
System.out.println("Aber Herr Graf. " + pruefeEingabe(start, end)
+ " Bitte geben Sie Unter- und Obergrenze erneut ein.");
start = sc.nextInt();
end = sc.nextInt();
}
// Scanner schliessen
sc.close();
// Wenn die Grenzen falsch sind muessen sie getauscht werden
if (start > end) {
int temp = start;
start = end;
end = temp;
System.out.println("Sie meinten sicher Untergrenze " + start
+ " und Obergrenze " + end + ". Korrigiert");
}
System.out.print("Die knuddeligen Zahlen im Bereich " + start
+ " bis " + end + ": ");
// Boolean der fuer die korrekte Darstellung der Kommata sorgt
boolean noComma = true;
// Ausgabe aller knuddeligen Zahlen zwischen Unter- und Obergrenze
for (int i = start; i <= end; i++) {
if (isKnuddelig(i)) {
if (!noComma) {
System.out.print(", ");
}
System.out.print(i);
noComma = false;
}
}
System.out.println("\nAuf Wiedersehen, Herr Graf.");
}
public static String pruefeEingabe(int start, int end) {
// Es wird kein Fehler angenommen
String fehler = null;
// Wenn die Untergrenze fehlerhaft ist
if (start < 2) {
fehler = "Die Untergrenze ist kleiner als 2.";
}
// Wenn die Obergrenze fehlerhaft ist
if (end < 2) {
if (fehler == null) {
fehler = "Die Obergrenze ist kleiner als 2.";
} else {
fehler += " Die Obergrenze ist kleiner als 2.";
}
}
return fehler;
}
public static boolean isKnuddelig(int zahl) {
// zahl ist knuddelig wenn die Teilersumme mindestens
// so gross wie die Zahl selbst ist
return teilerSumme(zahl) >= zahl;
}
public static int teilerSumme(int zahl) {
int sum = 0;
// Kontrolliere alle moeglichen Teiler
for (int i = 1; i <= zahl / 2; i++) {
// Wenn die Division den Rest 0 ergibt, ist es ein Teiler
if (zahl % i == 0) {
sum += i;
}
}
return sum;
}
}