Statische Methoden (2)
Zeit zum Ausprobieren
Es folgt ein längeres Beispielprogramm, das natürliche Zahlen analysiert:
Ihnen bleibt, zu analysieren, wie im Programm Zahlen von Anweisungen der main-Methode an die Prozeduren und Funktionen übergeben und wie sie von diesen weiterverarbeitet und zurückgegeben werden. Arbeiten Sie das Programm am besten im Einzelschrittmodus ab.
import java.util.*;
class Integertest {
// Die Funktion stellenZahl() verwandelt
static int stellenZahl(int zuZaehlen) { // den übergebenen Integer in einen String,
String ausString = String.valueOf(zuZaehlen); // ermittelt mithilfe der Stringmethode
return(ausString.length()); // length() dessen Länge und gibt diese
} // Zahl mit der return-Anweisung zurück.
static void stellenAusgabe(int zuDrucken) {
// Die Prozedur stellenAusgabe()nimmt einen
String ausString = String.valueOf(zuDrucken);
// Integer-Wert an und zerlegt ihn beim Druck
for (int n=0; n<ausString.length();n++) {
// Sie gibt keinen Wert zurück (void=leer)
System.out.print(ausString.charAt(n));
if (n < ausString.length()-2) {System.out.print(",
");}
if (n == ausString.length()-2) {System.out.print("
und ");}
}
System.out.println();
}
static boolean istGerade(int testZahl) {
// Die Funktion istGerade() ermittelt,
return testZahl % 2 == 0;
// ob die übergebene Zahl gerade ist
}
// und gibt einen Wahrheitswert aus.
static int ggT(int erste, int zweite) {
int ggT = 0;
// Die Funktion ggT ermittelt den
int t = erste+1;
// größten gemeinsamen Teiler zweier Zahlen
do {
t--;
} while (erste %t != 0 || zweite % t != 0);
return t;
}
static double aritMittel(double erste, double zweite) {// Die Funktion
arithMittel() berechnet
return (erste + zweite)/2;
// zu zwei übergebenen double-Zahlen
}
// deren Mittelwert.
public static void main(String[] args) {
// Hier beginnt die main(-Methode
Scanner Eingabe = new Scanner(System.in);
// das "Hauptprogramm"
System.out.println("Zahlentest");
System.out.print("\nGib bitte eine natürliche Zahl ein: ");
int zahl1 = Integer.parseInt(Eingabe.next());
// Funktionen kommen in der Regel auf der
int st = stellenZahl(zahl1);
// rechten Seite von Wertzuweisungen vor
System.out.print("Diese Zahl hat "+st+" Stellen: ");
stellenAusgabe(zahl1);
// Prozeduren werden in einem Programm
// als Anweisungen verwendet.
if (istGerade(zahl1)) {
System.out.println("Die Zahl ist gerade");
} else {
System.out.println("Die Zahl ist ungerade");
}
System.out.print("\nGib bitte noch eine natürliche Zahl ein:
");
int zahl2 = Integer.parseInt(Eingabe.next());
System.out.print("Diese Zahl hat "+stellenZahl(zahl2)+"
Stellen: ");
stellenAusgabe(zahl2);
if (istGerade(zahl2)) {
System.out.println("Die Zahl ist gerade");
} else {
System.out.println("Die Zahl ist ungerade");
}
System.out.println("\nDer ggT deiner beiden Zahlen ist "+ggT(zahl1,
zahl2));
System.out.println("Der Mittelwert deiner Zahlen ist "+aritMittel(zahl1,
zahl2));
}
}
Aufgaben: