Variable und einfache Datentypen:Javakurs

Aus Info-Theke
Zur Navigation springen Zur Suche springen


Übersicht

Theorie

Variable sind das Gedächtnis eines Programms. Da Java eine typisierte Sprache ist, hat jede Variable genau einen Typ und einen Wert. Jede Variable muss deklariert werden.

Konvention: Variablen werden klein geschrieben.

Es gibt folgende einfache Datentypen:

Datentyp Bedeutung Literal (Beispiele)
int Ganzzahl, 32 Bit, mit Vorzeichen 42 -22 0 0x7fff 0772
long Ganzzahl, 64 Bit, mit Vorzeichen 123456789012L 0xa12345668L -98765643210123L
boolean Wahrheitswert, boolscher Wert true false
char 16-Bit Zeichen (Unicode) '?' '\n'
float Gleitkommazahl, 32 Bit, mit Vorzeichen 0.73 1.7E-22 0.0
double Gleitkommazahl, 64 Bit, mit Vorzeichen 0.73 1.7E-22 0.0
String Zeichenfolge, eigentlich kein einfacher Typ, aber eingebaut und oft benutzt... "Hallo liebe Leute"

Syntax

<data_type> <name> [ = <expr> ] ';'

Beispiele

int x;
int index = 0;
bool again = true;
double pi = 3.14159265;
String language = "german";

Formatierte Ausgabe

Eine häufig genutzte Ausgabe von einfache Datentypen ist die Methode format() aus der Klasse String. Der erste Parameter ist die Formatangabe: Das ist ein Text, angereichert mit Platzhaltern, die mit den folgenden Parametern ersetzt werden.

String.format("Die erste Primzahl: %d pi: %f", 2, 3.14);
Platzhalter Datentyp Bemerkung
%d int Dezimalzahl
%x int Hexadezimal
%f double Gleitpunktzahl ohne Exponent
%g double Gleitpunktzahl mit Exponent
%s String Zeichenfolge

Zwischen % und datentypspezifischem Konvertierungszeichen können Formatierungsinformationen auftauchen:

Beispiele:

Formatierung Ausgabe Bemerkung
String.format("count: %3d", 2) count: 2 Mindestbreite 3, mit Leerzeichen aufgefüllt
String.format("count: %04d", 2) count: 0002 Mindestbreite 4, mit '0' aufgefüllt
String.format("Volume: %10.3f", 777.3344); Volume: 777.334 Gesamtbreite 10, 3 Dezimalstellen
String.format("Area: %.3g", 0.7773344E-12) Area: 7.77E-12 . 3 gueltige Ziffern
String.format("Text: %8.10s...", "abcdefghijklmnopqrst") Text: abcdefghij... Mindestlänge 8, Maximallänge 10

Beispielprogramme

Volumen und Fläche der Kugel

double pi = 3.141592;
double radius = 1;

double area = radius*radius*pi*4;
double volume = radius*radius*radius*pi*4/3;

System.out.println(String.format("radius: %f area: %f volume: %f", radius, area, volume));

Antennenausrichtung

  • Ein Roboter fährt auf einer Geraden an einer Antenne im Abstand a vorbei.
  • Der Roboter hat selber eine Antenne, die auf dies externe Antenne ausgerichtet werden soll
  • Der Fahrweg hat eine Länge von s (von Anfang des Fahrweges bis Punkt P)
  • Die Antennen-Ausrichtung soll alle s/100 berechnet werden
  • Aufgabe: Berechne die Winkeländerungen der ersten 5 Schritte in einem Programm aus.

Antennenausgleich.png

Formeln:

  • Winkel w0: tan w0 = Gegenkathete / Ankathete = a / s
  • Winkel w1: tan w1 = a / (s - s/100)
  • Winkel wn: tan wn = a / (s - n/100) wn = arctan (a / (s - n/100))

Java Programm

  • Menü "File - New - Class"
    • Name: Lesson1b
    • [X] public static void main (String[] args)
    • [X] Generate comments
package javakurs;

public class Lesson1b {
   public static void main(String[] args) {
	double a = 1;
	double s = 2;
	double w0 = Math.atan(a / s);
	double lastW = w0;
	int n = 1;
	double wN = Math.atan(a / (s - n / 100.0));
	System.out.println(String.format("1: Winkel: %f Diff: %f", wN, wN - lastW));
	lastW = wN;
	n = 2;
	wN = Math.atan(a / (s - n / 100.0));
	System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
	lastW = wN;
	n = 3;
	wN = Math.atan(a / (s - n / 100.0));
	System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
	lastW = wN;
	n = 4;
	wN = Math.atan(a / (s - n / 100.0));
	System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
	lastW = wN;
	n = 5;
	wN = Math.atan(a / (s - n / 100.0));
	System.out.println(String.format("%d: Winkel: %f Diff: %f", n, wN, wN - lastW));
   }
}

Hinweis:

  • Die Funktion arcus tangens von x wird so aufgerufen: Math.atan(x)

Hausaufgabe

  • Ein Fensterputzerroboter besteht aus einem Teleskoparm, der mit 2 Motoren von links nach rechts und zurück bewegt wird.
  • Der erste Motor steuert die Länge des Teleskoparmes, der zweite den Winkel.
  • Der Weg des Putzarms wird in gleich große 100 Teilschritte zerlegt.
  • Stelle Formeln auf, die für jeden Schritt den Längenunterschied des Teleskopstabes und den Differenzwinkel berechnen.
  • Berechne die Werte für die ersten 5 Schritte.

Hinweis: Die Quadratwurzel berechnet die Methode Math.sqrt().

Putzroboter.png