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:

  1. Programmieren Sie eine Funktion static int querSumme(int zahl)
  2. Programmieren Sie eine Funktion static int kgV(int zahlA, int zahlB)
  3. Programmieren Sie die Funktion static double geoMittel(double zahlA, double zahlB)
  4. Ändern Sie die Prozedur stellenAusgabe() so, dass der Parameter 713 die Ausgabe "7 Hunderter 1 Zehner 3 Einer" oder vielleicht auch "siebenhundertdreizehn" erzeugt.
  5. Schreiben Sie ein Programm, das untersucht, welche vierstellige Zahl abcd die Gleichung abcd = ab*cd erfüllt.
    - Produzieren Sie der Reihe nach alle vierstelligen Zahlen von 1000 bis 9999.
    - Verwandeln Sie jede dieser Zahlen in einen String
       und zerlegen Sie diesen mithilfe von String.charAt() in Tausender, Hunderter, Zehner und Einer.
    - Verwandeln Sie die vier Stellen in Double-Werte und berechnen Sie mithilfe von Math.pow() den Wert ab*cd.
    - Vergleichen Sie diesen Wert mit der ursprünglichen Zahl.