Tastatur und Monitor

Ein- und Aus­gabe



Ideen: A. M. Maier, G. Kompa, Elektronikschule Tettnang
E. Fuchst, "Java 9 Grundlagen Program­mierung, Herdt Verlag, 2017


Das Java-Programm besteht aus einzelnen Anwei­sungen die hinter­einander abge­arbeitet werden. Eine einfache Anweisung stellt bspw. die Tastatureingabe oder die Monitorausgabe dar.

Neben der Eingbe von Daten über die Tastatur und der Monitorausgabe, lernst Du in diesem Artikel Variablen, Konstanten und Datentypen kennen. Darüber hinaus wird Dir die Datentypumwandlung und die formatierte Ausgabe erklärt.

Infos Java Anweisungen und Kommentare



Entwicklungsumgebung Eclipse

Das Java-Programm besteht aus einzelnen Anwei­sungen die hinter­einander abge­arbeitet werden. Eine einfache Anweisung stellt bspw. die Tastatureingabe oder die Monitorausgabe dar. Sie wird mit Semikolon ; abgeschlossen. Ein Anweisungs­block wird in geschweifte Klammern gesetzt. {}.

Java unterscheidet zwischen Groß- und Klein­schreibung und verwendet den Unicode-Zeichen­satz.

Mit Kommentaren kann man im Quelltext den Überblick bewahren. So kann man die Funktions­weise einzelner Teile besser nachvoll­ziehen und im Quelltext nach Begriffen der Kommentare suchen. Einzeilige Kommentare schreibt man mit //, mehrzeilige mit /* ... */

Variab­len und Daten­typen deklarieren und initialisieren



Datentyp Größe Wertebereich
byte 1 Byte -128 ... 127
short 2 Byte -32768 ...
int 4 Byte -2.147.483.648 ...
float 4 Byte -2.2E9 ...
double 8 Byte -9.2E18 ...

Eine Variable speichert einen veränder­baren Wert. Der Datentyp der Variable legt die Zahlenart und max. Größe fest. Beachte: Der Name der Variable darf nicht aus Java-Befehlen bestehen.

Numerische Datentypen gibt es für ganze Zahlen (byte, short, int, long) und für Dezimalzahlen (float, double). Man beachte: Je größer der Datentyp, desto genauer sind bspw. die Nachkomma­stellen, aber desto größer auch der Speicherbedarf.

Bei der Deklaration wird für die Variable ein Speicherplatz reserviert: int x;. Dabei ist int der Datentyp und x der Name der Variable. Bei der Initialisierung (auch Zuweisung) wird der Variable ein Wert gegeben: x = 1;.

Beispiele:
long x = 2101;
double pi = 3.14;

weitere Datentypen Zeichen und Zeichenketten



Datentyp Größe Wertebereich
boolean 1 Byte true, false
char 2 Byte Unicode Zeichen
String 2 Byte pro Zeichen Unicode Zeichen

Zeichen werden mit dem Datentyp char gespeichert. Der Datentyp String speichert mehrere Zeichen hintereinander (Zeichenketten). Zeichen werden in Hochkomma ', Zeichenketten in Anführungszeichen " gesetzt.

Für manche Zeichen gibt es sogenannte Escape Sequenzen, da sie tlw. anderweitig schon belegt sind:
Zeilenumbruch - \n, Tabulator - \t, " - \"

Für Wahrheitswerte gibt es den Datentyp boolean.

Beispiele:
char zeichen = 'A';
String satz = "\t\"Hallo\" Klasse";
boolean vollstaendig = true;

Aufgabe 1 Erste Monitor­ausgabe

Autoren: G. Kompa, D. Supper | binnendifferenziert

Im ersten Programm wird die Ausgabe von Worten (Zeichenketten) und Werten getestet. Beim Programmieren muss man auf Klein- und Großschreibung achten (case sensitive).

  1. Öffne Eclipse IDE und lege dabei einen sinnvollen Speicherort für Deinen Arbeitsbereich fest. Erstelle in Eclipse das erste Projekt 01-Ein-und-Ausgabe.
  2. Erstelle die Klasse ErsteAusgabe. Dabei wird die Java-Datei mit dem identischen Namen Ausgabe1.java erstellt.
    Hinweis: Die Namen von Klassen beginnen mit einem Großbuchstaben und haben weder Sonder- noch Leerzeichen.
    Kopiere den Quelltext aus der Abbildung in die Datei und teste dein Programm. Bestimme den ausgegebenen Wert.
  1. Finde drei Möglichkeiten um einen Wert von 10 auszugeben.
  2. Erzeuge mithilfe der Variable nun die alternative Ausgabe: Die Zahl ist 3!.

    Hänge mit + eine weitere Zeichenkette an.


  3. Verwende ein Terminal (Windows: cmd) und wechsel in das Verzeichnis der java-Datei. Nun kannst Du mit dem Befehl javac Ausgabe1.java die Datei kompilieren. Mit dem Befehl java Ausgabe1 kannst Du die Datei nun direkt mit der JavaVirtualMachine ausführen.
  1. Die Zahl ist: 3
  2. System.out.println(Die Zahl ist: 10");,
    System.out.println("Die Zahl ist: " + (zahl+7));,
    int zahl = 10;
  3. System.out.println("Die Zahl ist " + zahl + "!");

Aufgabe 2 Erste Tastatur­eingabe

Autoren: G. Kompa, D. Supper

Für das übersichtliche Programmieren wird nach jeder Klammer { der Quelltext eingerückt. So bleibt das Programm übersichtlich. In der Abbildung steht der Quelltext für eine Tastatureingabe.

  1. Erstelle eine Klasse ErsteEingabe, in der du den Quelltext aus der Abbildung kopierst.
  2. Führe das Programm aus und gib, anstelle einer Zahl, ein Zeichen und Wort ein. Notiere die Fehlermeldung.
  3. Ergänze das Programm um eine Monitorausgabe, die den Benutzer auffordert einen Wert einzugeben und diesen mit der Entertaste zu bestätigen.
  4. Ergänze das Programm um eine Monitorausgabe wie bspw.: Die eingegebene Zahl lautet: ...
  5. Ergänze das Programm mit der Eingabe einer zweiten Zahl und gib das Produkt beider Zahlen aus.

Entspann dich erstmal ...



Wie lernt man?

Der kleine Max soll Blumen kaufen. Mutter sagt: "Du Max, ich habe Blumen beim Gärtner Grün bestellt, hol mir die doch bitte. Ich erklär dir wie du hinkommst: Du gehst die Straße runter, dann rechts, zwei Häuserblock weiter links, dann geradeaus ... Hast du verstanden?" Max antwortet "ja" und geht los. Nach 2 Stunden kommt er ohne Blumenstrauß zurück. Wieso?

Antwort: Die Mutter hat die verkehrte Frage gestellt. Sie hätte Max bitten sollen, den Weg zu wiederholen.

Investiere für dich und deine Freunde in gute Fragen wie bspw.: "Was hast du dir bei dieser Lösung gedacht?"

Konstan­ten und Daten­typ­um­wandlung type casting



final double E = 2.7182818284;
final double MWST = 0.19;

int menge = (int)4.124;
double position = 43.24;
int pos = (int)position;
double number = (double)menge+0.5;

Durch die Einführung von Konstanten wird der Quellcode besser lesbar. Sollte sich außerdem bspw. der MwSt-Satz einmal ändern kann man so an einer Stelle im Programm den Wert für alle Berechnung korrigieren. Eine Konstante wird mit dem Schlüsselwort final definiert.

Datentyp­umwandlungen (engl. type casting) ermöglichen es für bestimmte Berechnungen oder Ausgaben den Datentyp zu verändern. Durch den in Klammern geschriebenen Datentyp vor dem Wert kennzeichnet man die Typkonvertierung: (int)3.14.

Formatierte Ausgabe printf und decimalformat



double pi = 3.14159;
int a = 270;
double b = 11.5;

System.out.printf("Pi = %.3f\n",pi);
System.out.printf("Pi = %5.2f\n",pi);
System.out.printf("%d Äpfel und %d Birnen",a,(int)b);

Folgende Ausgabe wird erzeugt:

Pi = 3,142
Pi =  3,14
270 Äpfel und 11 Birnen

Aufgabe 3 Uhrzeit berechnen

Autoren: G. Kompa, D. Supper | binnendifferenziert

watch

Schreibe ein Programm, dass den Benutzer auffordert die Zeit in Sekunden einzugeben. Der Wert 1089384 entspräche beispielsweise 12 Tagen, 14 Stunden, 36 Minuten und 24 Sekunden.

  1. Programmiere in der Klasse Uhrzeit die Eingabe der Sekunden und die Ausgabe der Tage, Stunden, Minuten und Sekunden.

    Teile den Sekundenwert durch (60*60*24) um die Anzahl der Tage zu bekommen. Für die übrigen Minuten zu erhalten verwende den Modulo-Operator %.
    int i = 100 / 60; //i = 1, Kommastellen entfallen
    int i = 100 % 60; //i = 40, nur der Rest wird angegeben

  2. Gib Datum und Uhrzeit aus. 0 s entsprechen dabei dem 01.01.2000 00:00:00 Uhr. 1089384 entspräche beispielsweise dem 13.01.00 14:36:24.

Aufgabe 4 Welche Aussage ist wahr? - Bedingungen mit Variablen

Wähle die korrekten Aussagen aus.

final double E = 2.7182818284;
System.out.printf("e = %.3f",E);
Gib die korrekte Ausgabe an. Wähle eine Antwort.

  1. e = 2,718
  2. E = 2.718
  3. e = %.3f
  4. e = 2.718


final double pi = 3.14159;
System.out.printf("Pi = %5.2f",pi);
Gib den Ausgabetext an. Wähle eine Antwort.

  1. Pi = 3,14
  2. Pi =  3,14159
  3. Pi =  3.14
  4. Pi =  3,14



int menge = (int)4.124;
System.out.printf("Anzahl = %d",menge);
Gib den Ausgabetext an. Wähle eine Antwort.

  1. Anzahl = 4,124
  2. Anzahl = 4.124
  3. Anzahl = 4
  4. Anzahl = 4,0


int a = 4; double b = 4.124;
System.out.printf("%d Äpfel und %d Birnen",a,(int)b);
Gib den Ausgabetext an. Wähle eine Antwort.

  1. 4 Äpfel und 4,124 Birnen
  2. 4 Äpfel und 4 Birnen
  3. 4 Äpfel und 4.124 Birnen
  4. 4 Äpfel und 0,124 Birnen


40 % Rabatt
Nenne den passenden Quelltext. Wähle eine Antwort.

  1. System.out.printf("%d \% Rabatt",(int)40.23);
  2. System.out.printf("%d \% Rabatt", 40.23);
  3. System.out.printf("%d \% Rabatt",(int)41);
  4. System.out.printf("%d \% Rabatt",(double)40.23);


1,23 km
Nenne den passenden Quelltext. Wähle eine Antwort.

  1. System.out.printf("%.2f km",(int)1.23);
  2. System.out.printf("%.2f km",1.2345);
  3. System.out.printf("%f km",(int)1.2332);
  4. System.out.printf("%2f km",(double)1.23);

Aufgabe 5 Stromrechnung

Autoren: D. Supper | binnendifferenziert

Stromrechnung

Schreibe ein Programm, für die Ausgabe einer Stromrechnung wie in der Abbildung.

  1. Programmiere die Klasse Stromrechnung. Der Benutzer gibt den Zählerstand am Anfang und Ende des Jahres ein. Erkundige Dich nach den aktuellen Strompreisen und erzeuge eine Ausgabe wie in der Abbildung.

    Für den aktuellen Strompreis verwende eine Konstante final double PREIS_PRO_KWH = ...;.
    Nutze die Escape-Sequenz \t, um den Text entsprechend einzurücken.
    Das Runden der Zahlen ist erst im zweiten Aufgabenteil zu berücksichtigen.

  2. Runde die Werte auf 2 Nachkommastellen.

    Nutze die Datentypkonvertierung (engl. cast) um die Werte auf zwei Nachkommastellen zu begrenzen: double x = (int)x * 100;


Aufgabe 6 Typkonflikte

Autoren: G. Kompa, D. Supper

Kopiere den Quelltext in eine Testklasse Typkonflikte und korrigiere sowie kommentiere, falls vorhanden, die Typkonflikte. Optional: Gib die Werte der Variablen am Monitor aus.

  1. int x = 3.4;
    int y = 4;
    char a = 'a';
    char b = '54';
    String zahl = "8";
    String nummer = 8;
    String zeichen1 = "4";
    String zeichen2 = 'G';
    boolean weiche = 1;
    double dezimalzahl = "2.5";
  1. Scanner kb = new Scanner(System.in);
    Scanner kb = "new Scanner(System.in)";
    String kb = "new Scanner(System.in)";
    String kb = 'new Scanner(System.in)';
    char kb = 'new Scanner(System.in)';
  2. int x = 4;
    String y = "5";
    double summe = x + y;
  1. Der Datentyp int definiert Ganzzahlen. Der Datentyp char definiert einzelne Zeichen die in Hochkommas stehen müssen ' '. Der Datentyp String definiert Zeichenketten welche in Anführungszeichen stehen müssen " ".
  2. Scanner ist kein Datentyp. Zeichenketten stehen in Anführungszeichen " " und einzelne Zeichen in Hochkommas ' '
  3. Bei Zuweisungen muss der Datentyp übereinstimmen. Falls eine Änderung notwendig ist kann das über eine Datentypkonvertierung (engl. cast) erzwungen werden.

Wortliste und Satzbausteine



die Progra­mier­sprache Java, -n Die Programier­sprache Java ist eine sogenannte Hoch­sprache mit der ausführbare Programme für den Rechner ge­schrieben werden.
der Quell­text, -e das geschriebene Programm mit dem Dateityp .java
die Syntax, - die Grammatik des Programms
der Byte­code, -s Der Bytecode vom Dateityp .class ist ein übersetzter Quelltext. Dieser ist, im Gegensatz zum Maschinencode, für jedes Betriebssystem identisch.
der Com­piler, ~ Ein Java Compiler übersetzt den Quelltext .javain einen Bytecode .class.
die Java Vir­tual Ma­chine Der Bytecode wird von der Laufzeit­umgebung, der "Java Virtual Machine" interpretiert und ausgeführt.
die Anwei­sung, -en Das Programm besteht aus Anweisungen, die mit Semikolon ; abgeschlossen werden.
der Anwei­sungs­block, -"e eine Reihe von Anweisungen die in geschweiften Klammern  {...}zusammengefasst werden
die Vari­able, -en Eine Variable speichert einen veränder­baren Wert. Der Name der Variable darf nicht aus Java-Befehlen bestehn und wird klein geschrieben.
der Daten­typ, -en Der Datentyp legt die Größe und Art der Variable fest.
die De­kla­ration, -en Der Speicherplatz der Variablen wird festgelegt: int x;
die Initia­lisierung, -en Ein Wert wird gespeichert: x = 3;. Dies wird auch als eine Zuweisung bezeichnet.