Operatoren und Ausdrücke
Mit Variablen allein passiert noch nicht viel. Erst mit Operatoren wird
gerechnet, verglichen und entschieden. Ein Ausdruck ist alles, was einen
Wert ergibt: 3 + 4, alter >= 18 oder einfach preis.
Was du am Ende kannst
Abschnitt betitelt „Was du am Ende kannst“- mit ganzen Zahlen und Kommazahlen rechnen – und den Unterschied kennen
- den Rest-Operator
%sinnvoll einsetzen - Bedingungen mit Vergleichen und
&&,||,!formulieren - Texte richtig vergleichen
- fertige Rechenfunktionen aus der Klasse
Mathnutzen
Rechnen
Abschnitt betitelt „Rechnen“package de.drv;
public class Rechnen {
public static void main(String[] args) { System.out.println(7 + 2); System.out.println(7 - 2); System.out.println(7 * 2); System.out.println(7 / 2); System.out.println(7 % 2); System.out.println(7 / 2.0); System.out.println(7.0 / 2); System.out.println(1 + 2 * 3); System.out.println((1 + 2) * 3); }
}9514313.53.579| Operator | Bedeutung |
|---|---|
+ - * |
Addition, Subtraktion, Multiplikation |
/ |
Division |
% |
Rest der ganzzahligen Division („modulo“) |
Es gilt Punkt vor Strich – *, / und % werden vor + und -
ausgewertet. Mit Klammern legst du die Reihenfolge selbst fest.
Ganzzahldivision
Abschnitt betitelt „Ganzzahldivision“7 / 2 ergibt 3, nicht 3,5. Sind beide Werte ganze Zahlen, ist auch das
Ergebnis eine ganze Zahl – die Nachkommastellen fallen weg. Ist mindestens
einer der Werte eine Kommazahl, wird mit Kommazahlen gerechnet: 7 / 2.0
ergibt 3.5.
Der Rest-Operator %
Abschnitt betitelt „Der Rest-Operator %“% liefert den Rest einer ganzzahligen Division: 17 % 5 ergibt 2, denn
17 = 3 · 5 + 2. Das klingt unscheinbar, ist aber sehr nützlich:
| Ausdruck | ergibt | nützlich für |
|---|---|---|
zahl % 2 |
0 bei geraden Zahlen |
gerade oder ungerade? |
zahl % 10 |
die letzte Ziffer | Ziffern zerlegen |
zahl % 7 == 0 |
true, wenn durch 7 teilbar |
Teilbarkeit |
Zusammen mit / lassen sich Werte in Einheiten zerlegen:
package de.drv;
import java.util.Scanner;
public class Zeit {
public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
System.out.print("Sekunden: "); int gesamt = scanner.nextInt();
int stunden = gesamt / 3600; int minuten = gesamt % 3600 / 60; int sekunden = gesamt % 60;
System.out.printf("%d:%02d:%02d%n", stunden, minuten, sekunden);
scanner.close(); }
}Sekunden: 37251:02:05Division durch null
Abschnitt betitelt „Division durch null“System.out.println(10.0 / 0); // InfinitySystem.out.println(0.0 / 0); // NaN – "Not a Number"System.out.println(10 / 0); // ProgrammabbruchBei Kommazahlen kommt ein besonderer Wert heraus: Infinity (unendlich) oder
NaN (keine Zahl). Bei ganzen Zahlen bricht das Programm ab:
Exception in thread "main" java.lang.ArithmeticException: / by zeroZuweisungsoperatoren
Abschnitt betitelt „Zuweisungsoperatoren“Häufig wird eine Variable auf Basis ihres eigenen Werts verändert. Dafür gibt es Kurzformen:
package de.drv;
public class Zuweisung {
public static void main(String[] args) { int punkte = 10; punkte += 5; System.out.println(punkte); punkte -= 3; System.out.println(punkte); punkte *= 2; System.out.println(punkte); punkte++; System.out.println(punkte); punkte--; System.out.println(punkte); }
}1512242524| Kurzform | bedeutet |
|---|---|
x += 5 |
x = x + 5 |
x -= 5 |
x = x - 5 |
x *= 5 |
x = x * 5 |
x /= 5 |
x = x / 5 |
x %= 5 |
x = x % 5 |
x++ |
x = x + 1 |
x-- |
x = x - 1 |
Vergleiche und Logik
Abschnitt betitelt „Vergleiche und Logik“Ein Vergleich ergibt immer einen Wahrheitswert – true oder false. Mit
logischen Operatoren verknüpfst du mehrere Bedingungen:
package de.drv;
public class Vergleiche {
public static void main(String[] args) { int alter = 17;
boolean volljaehrig = alter >= 18; System.out.println("volljährig: " + volljaehrig); System.out.println("genau 17: " + (alter == 17)); System.out.println("nicht 17: " + (alter != 17));
boolean jugendlich = alter >= 14 && alter < 18; System.out.println("jugendlich: " + jugendlich); System.out.println("Kind oder Senior: " + (alter < 14 || alter >= 65)); System.out.println("nicht volljährig: " + !volljaehrig); }
}volljährig: falsegenau 17: truenicht 17: falsejugendlich: trueKind oder Senior: falsenicht volljährig: true| Operator | Bedeutung |
|---|---|
== |
gleich |
!= |
ungleich |
< <= |
kleiner, kleiner oder gleich |
> >= |
größer, größer oder gleich |
&& |
und – beide Bedingungen müssen wahr sein |
|| |
oder – mindestens eine Bedingung muss wahr sein |
! |
nicht – kehrt den Wert um |
Texte vergleichen
Abschnitt betitelt „Texte vergleichen“package de.drv;
import java.util.Scanner;
public class Texte {
public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
System.out.print("Weiter? (ja/nein) "); String antwort = scanner.nextLine();
System.out.println("mit == : " + (antwort == "ja")); System.out.println("mit equals: " + antwort.equals("ja")); System.out.println("ohne Groß/klein: " + antwort.equalsIgnoreCase("JA"));
scanner.close(); }
}Weiter? (ja/nein) jamit == : falsemit equals: trueohne Groß/klein: trueObwohl ja eingegeben wurde, liefert == false. Bei Texten prüft ==
nicht, ob der Inhalt gleich ist, sondern ob es sich um dasselbe Objekt
handelt. Warum das so ist, verstehen wir, wenn wir über Objekte sprechen.
Die Klasse Math
Abschnitt betitelt „Die Klasse Math“Für alles, was über die Grundrechenarten hinausgeht, gibt es die Klasse Math.
Sie gehört zu java.lang und braucht deshalb keinen import.
package de.drv;
public class Mathe {
public static void main(String[] args) { System.out.println(Math.abs(-4)); System.out.println(Math.max(3, 7)); System.out.println(Math.min(3, 7)); System.out.println(Math.pow(2, 10)); System.out.println(Math.sqrt(2)); System.out.println(Math.round(2.5)); System.out.println(Math.PI); }
}4731024.01.414213562373095133.141592653589793| Aufruf | Ergebnis |
|---|---|
Math.abs(x) |
Betrag |
Math.max(a, b), Math.min(a, b) |
größerer bzw. kleinerer Wert |
Math.pow(a, b) |
a hoch b – immer double |
Math.sqrt(x) |
Quadratwurzel – immer double |
Math.round(x) |
kaufmännisch gerundet – als long |
Math.PI |
die Kreiszahl π |
Wenn es nicht klappt
Abschnitt betitelt „Wenn es nicht klappt“| Symptom bzw. Meldung | Ursache |
|---|---|
| Ergebnis ohne Nachkommastellen | Ganzzahldivision – einen Wert als Kommazahl schreiben oder umwandeln |
| Type mismatch: cannot convert from int to boolean | = statt == in einer Bedingung |
| Type mismatch: cannot convert from long to int | Math.round(…) liefert long – Cast (int) oder long-Variable |
ArithmeticException: / by zero |
ganzzahlige Division durch 0 |
Textvergleich liefert false, obwohl der Text stimmt |
== statt equals |
Übungen
Abschnitt betitelt „Übungen“-
Lies eine Anzahl Sekunden ein und gib sie als Tage, Stunden, Minuten und Sekunden aus.
-
Lies eine dreistellige Zahl ein und berechne ihre Quersumme – nur mit
/und%. -
Lies ein Jahr ein und gib aus, ob es ein Schaltjahr ist – als
trueoderfalse. Regel: durch 4 teilbar, aber nicht durch 100 – es sei denn, durch 400. -
Lies den Radius eines Kreises ein und gib Umfang und Fläche mit zwei Nachkommastellen aus.
-
Lies zwei Punkte im Koordinatensystem ein (x1, y1, x2, y2) und berechne ihren Abstand: √((x2−x1)² + (y2−y1)²).
-
Lies eine Antwort ein und gib
trueaus, wenn sieja,joderyeslautet – egal, ob groß oder klein geschrieben.