Dies ist eine alte Version des Dokuments!


Die Struktur

…von sehr einfachen Java-Klassen .

public class Klassenname
{
   // Instanzvariablen
   ...     
 
   /**
    * Konstruktor für Objekte der Klasse Test
    */
   public Test()
   {
      // Instanzvariablen initialisieren
      ...
   }
 
   //Methoden
   public void beispielMethode()
   {
      ...
   }
}

Jeder Java-Anweisungsblock fängt mit einem { an und hört auf mit }.

Frage

Wie viele Blöcke sind in obiger Klasse?

Beispiel

Folgendes in die Methode eintippen

   public void beispielMethode()
   {
      System.out.println("Tach auch!");
   }

Wie bekommt man nun die Ausgabe auf den Bildschirm?

Dazu müssen wir erst den Umgang mit BlueJ lernen…
(Bitte anschließend zurückkommen und an dieser Stelle weiterlesen :-) )

Weiter geht's!

In diesem Fall brauchen wir weder einen Konstruktor noch Instanzvariablen. Einfach ausprobieren; es müsste in einem Terminal "Tach auch!" erscheinen.
println() ist eine Methode, um auf der Ausgabe (out) des Systems (System, der Rechner) zu erhalten (im Endeffekt ist das hier unser Terminal auf dem Bildschirm).

Weiteres Beispiel

   public void beispielMethode()
   {
      System.out.println("Ich lerne Java!");
      System.out.println("Alles klar?!");
   }

Jetzt sieht man weitere Sätze auf dem Bildschirm.

Der Bildschirm soll leer erscheinen, wenn man anfängt? Dazu muss man in den Optionen der Konsole den Menüpunkt Konsole löschen bei Methodenaufruf auswählen.
Ein paar Mal das obige Beispiel ausprobieren 8-o

In Java gibt es auch die Methode print() anstelle von println(). Ausprobieren – ausführen – sehen, was passiert: Unterschied gemerkt?

Manchmal ist es nützlich eine freie Zeile zu haben. Versuche folgende Ausgabe zu erhalten:

Ich lerne Java!  
Alles klar?!

Alles klar soweit? Dann weiter; ansonsten weiter ausprobieren bitte!

Eingaben

Jetzt einiges zu den Eingaben:
Wenn wir wollen, dass der Computer Eingaben von User1) einliest, brauchen wir etwas, worin diese Eingabe abgespeichert wird, bevor es verarbeitet werden kann: Eine Variable. Es gibt dabei verschiedene Typen von Variablen und zudem mit unterschiedlichen Datenbereichen. Di am häufigsten benutzten hast du ja bereits kennengelert…

Variablendeklaration

Und wie werden diese Variablen deklariert? Oben haben wir gesehen, dass es einen Instanzavariablen-Bereich gibt. An der Stelle wird die Deklaration stattfinden, aber nicht nur dort…

Einige Beispiele:

   int    meinAlter;
   String kommentar;

oder allgemeiner:

  Variablentyp Variablenbezeichner;

Um Variablen Werte zuzuweisen muss man folgende Syntax anwenden:

    variablenName = wert;

Das kann man überall in einem { … }-Block an entsprechender Stelle tippen.

Beispiel:

public class Beispiel {
   int    meinAlter;
   String kommentar;
 
   public void beispiel() {
      meinAlter = 19;
      kommentar = "Hallo! Ich lerne Java.";
 
      System.out.println(kommentar);
      System.out.println("Ich bin " + meinAlter + " Jahre alt.");
   }
}

Abschreiben, ausführen, sehen, was passiert!

Dies ist auch bei der Variablendeklaration möglich; Diese Zuweisung heißt dann Initialisierung, weil es eine Erstzuweisung ist.

public class Beispiel {
   int    meinAlter = 19;
   String kommentar = "Hallo! Ich lerne Java.";
 
   public void beispiel() {
      System.out.println(kommentar);
      System.out.println("Ich bin " + meinAlter + " Jahre alt.");
   }
}

Wie lese ich Eingaben von einem Benutzer ein? Das ist bei Java nicht wirklich einfach. Java wurde so entwickelt, dass Funktionalität und Plattformunabhängigkeit möglichst groß gehalten wurden. Dazu mussten viele Dinge abstrahiert werden. Diese sind dann in sehr allgemeiner Form implementiert worden, sodass insbesondere Anfänger auf große Schwierigkeiten stoßen, wenn sie diese benutzen wollen.
Leider betrifft das auch die Eingabe… :-(
Daher benutzen wir hier eine Klasse, die uns diese komplexe Arbeit abnimmt: Prog1Tools. Wenn dieses Paket auf dem PC eingerichtet ist, wird unser Leben mit Java deutlich erleichtert…

Ähnlich dem print oder println gibt es in dann die Befehle read<Typ> und readln<Typ>.

Beispiel:

import Prog1Tools.IOTools;
 
public class Beispiel {
   int    deinAlter;
   String kommentar;
 
   public void beispiel() {
      deinAlter = IOTools.readInteger("Wie alt bist du? ");
      kommentar = IOTools.readString("Gib mir ein Kommentar: ");
      System.out.println(kommentar);
      System.out.println("Du bist " + deinAlter + " Jahre alt.");
   }
}

Abschreiben, ausführen, sehen, was passiert!

Formatierte Ausgabe

OK, jetzt weißt du wie man Eingaben vom Benutzer einliest. Aber warte! Wenn ich 23.5 bei Wie alt bist du? eintippe erhalte ich eine Fehlermeldung! Jepp, das ist richtig! Der Wert auf diese Frage wird in meinAlter abgespeichert.
meinAlter ist aber eine Integer-Variable (Typ int). Also werden nur ganze Zahlen (Integer) akzeptiert. Mehr is' nicht! Wenn man Dezimalbrüche in der Variable meinAlter speichern will, muss double anstelle von int benutzt werden.

"Aber wenn ich's nach double ändere, werden seltsame fehlerhafte Zahlen ausgegeben" – wirst du sagen; Doch: Nein, das ist kein Müll da auf dem Bildschirm. Es ist die exponentielle Darstellung der Zahl. Für Normalsterbliche wäre eine Darstellung mit 3 oder 4 Stellen hinter dem Komma angenehmer. Versuche folgende Veränderung vorzunehmen:

import Prog1Tools.IOTools;
 
public class Beispiel {
   int    deinAlter;
   String kommentar;
 
   public void beispiel() {
      deinAlter = IOTools.readInteger("Wie alt bist du? ");
      kommentar = IOTools.readString("Gib mir ein Kommentar: ");
      System.out.println(kommentar);
      System.out.println("Du bist " + deinAlter + " Jahre alt.");
   }
}

Ersetzen durch:

import Prog1Tools.IOTools;
 
public class Beispiel {
   int    deinAlter;
   String kommentar;
 
   public void beispiel() {
      deinAlter = IOTools.readInteger("Wie alt bist du? ");
      kommentar = IOTools.readString("Gib mir ein Kommentar: ");
      System.out.println(kommentar);
      System.out.println("Du bist " + deinAlter + " Jahre alt.");
   }
}
    double deinAlter;
 
    public void beispiel()
    {
        deinAlter = IOTools.readDouble("Wie alt bist Du? ");
        kommentar = IOTools.readString("Gib mir ein Kommentar: ");
 
        System.out.println(kommentar);
        String format = "Du bist also %5.3f Jahre alt.\n";
        System.out.printf(format, meinAlter);
    }
}

Was bedeutet das? Wieso irgendwie %5.3f und so seltsam? Bei Dezimalbrüchen (double) bedeutet das:
Zeige (mindestens) 5 Stellen, davon 3 Stellen hinter dem Komma2).
Wenn wir also 23.5 für meinAlter eingeben, wird ausgegeben:

Ich bin 23,500 Jahre alt.

Probiere es anstelle von %5.3f mit anderen Zahlen aus. Sei kreativ!

Die Frage, ob wir das auch bei Strings machen können, drängt sich natürlich an dieser Stelle auf… Ausprobieren :-)

Siehe: Beispiele zu System.out.printf.

Fragen

Verständnisfragen

  1. Was bedeutet "strukturiert Programmieren"?
  2. Wofür steht die Zeile import … 3)?
  3. Java Programme fangen immer mit __________ an und beinhalten __________.
  4. Java Klassen fangen immer mit __________ an und beinhalten __________.
  5. Was ist der Unterschied zwischen System.out.print(), System.out.println() und System.out.printf()?
  6. Wie kann man zwei leere Zeilen auf dem Bildschirm ausgeben?''
  7. Nenne mindestens 5 Datentypen mit deren Wertebereich und Art!
  8. Wie kann man eine Eingabe einlesen?
  9. Was ist der Unterschied zwischen den einzelnen .readXXX-Methoden?
  10. Wieso kann man den Wert 0.75 Integer-Variablen nicht zuweisen?
  11. Wie werden Variablen in Java deklariert? Wie werden ihnen Werte zugewiesen?
  12. Mit welchem Tastenkürzel werden Programme in BlueJ übersetzt/kompiliert?
  13. Wie können wir Dezimalbrüche auf 3 Stellen vor und hinter dem Komma beschränken?
  14. Kann der Wert "1/4" double-Variablen zugewiesen werden?

Programmieren

  1. Schreibe ein Programm, das deinen Namen und dein Alter auf dem Bildschirm ausgibt.
  2. Schreibe ein Programm, das ein Kommentar von Benutzer einliest und eine Mindestbreite von 20 Zeichen hat.
  3. Schreibe ein Programm, das die Kreisfläche berechnet. Begrenze das Ergebnis auf 3 Stellen vor und 4 Stellen hinter dem Komma.
1) Nutzer
2) mit dem f wird übrigens festgelegt, dass es sich um eine Gleitkommazahl (float/double) handelt, die an deise Stelle kommt.
Siehe auch Java-API zu System.out.printf
3) z.B. import Prog1Tools.IOTools;
start/info/11if/java_struktur.1221199765.txt.gz · Zuletzt geändert: 23.10.2013 10:12 (Externe Bearbeitung)
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0