Appearance
Kapitel 16: Häufige Hilfsklassen
🎯 Lernziele
Random(Zufallszahlen)Math(Mathematische Funktionen)Date/SimpleDateFormat(Datum)Scanner(Tastatureingabe)
16.1 Random (Zufallszahlen)
🎲 Zufallszahlen generieren
java
import java.util.Random;
public class RandomBeispiel {
public static void main(String[] args) {
Random random = new Random();
// Ganze Zahl (int Bereich)
int zahl1 = random.nextInt();
System.out.println("Zufallszahl: " + zahl1);
// Ganze Zahl (0 bis n-1)
int zahl2 = random.nextInt(100); // 0-99
System.out.println("0-99: " + zahl2);
// Ganze Zahl (0 bis n inklusiv)
int zahl3 = random.nextInt(101); // 0-100
System.out.println("0-100: " + zahl3);
// Double (0.0 bis 1.0)
double zahl4 = random.nextDouble();
System.out.println("0.0-1.0: " + zahl4);
}
}📋 Beispiel: Zufällige Zahl raten
java
import java.util.Random;
import java.util.Scanner;
public class Zufallsraten {
public static void main(String[] args) {
Random random = new Random();
Scanner scanner = new Scanner(System.in);
int ziel = random.nextInt(100) + 1; // 1-100
int versuch;
int versuche = 0;
System.out.println("Errate die Zahl (1-100)!");
do {
System.out.print("Dein Tipp: ");
versuch = scanner.nextInt();
versuche++;
if (versuch < ziel) {
System.out.println("Zu niedrig!");
} else if (versuch > ziel) {
System.out.println("Zu hoch!");
} else {
System.out.println("Richtig! " + versuche + " Versuche.");
}
} while (versuch != ziel);
scanner.close();
}
}16.2 Math (Mathematische Funktionen)
🧮 Häufige Math-Methoden
| Methode | Beschreibung | Beispiel |
|---|---|---|
Math.abs(x) | Absolutwert | Math.abs(-5) → 5 |
Math.max(a, b) | Maximum | Math.max(10, 20) → 20 |
Math.min(a, b) | Minimum | Math.min(10, 20) → 10 |
Math.pow(a, b) | Potenz | Math.pow(2, 3) → 8.0 |
Math.sqrt(x) | Wurzel | Math.sqrt(9) → 3.0 |
Math.round(x) | Runden | Math.round(3.14) → 3 |
Math.ceil(x) | Aufrunden | Math.ceil(3.14) → 4.0 |
Math.floor(x) | Abrunden | Math.floor(3.14) → 3.0 |
Math.random() | Zufall 0.0-1.0 | Math.random() → 0.XX |
📋 Beispiel: Math verwenden
java
public class MathBeispiel {
public static void main(String[] args) {
System.out.println("Absolutwert: " + Math.abs(-5)); // 5
System.out.println("Maximum: " + Math.max(10, 20)); // 20
System.out.println("Potenz: " + Math.pow(2, 3)); // 8.0
System.out.println("Wurzel: " + Math.sqrt(9)); // 3.0
System.out.println("Runden: " + Math.round(3.14)); // 3
System.out.println("Aufrunden: " + Math.ceil(3.14)); // 4.0
// Zufallszahl 1-100 (mit Math.random())
int zahl = (int) (Math.random() * 100) + 1;
System.out.println("Zufall 1-100: " + zahl);
}
}16.3 Date / SimpleDateFormat (Datum)
📅 Datum verwenden (Java 8+ empfohlen: LocalDate, LocalDateTime)
java
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DatumBeispiel {
public static void main(String[] args) {
// Aktuelles Datum
LocalDate heute = LocalDate.now();
System.out.println("Heute: " + heute);
// Aktuelle Zeit
LocalDateTime jetze = LocalDateTime.now();
System.out.println("Jetze: " + jetze);
// Datum formatieren
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
String formatiert = jetze.format(formatter);
System.out.println("Formatiert: " + formatiert);
}
}📋 Beispiel: Datum berechnen
java
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
public class DatumBerechnung {
public static void main(String[] args) {
LocalDate heute = LocalDate.now();
LocalDate geburstag = LocalDate.of(2024, 12, 25);
// Tage bis zum Geburtstag
long tage = ChronoUnit.DAYS.between(heute, geburstag);
System.out.println("Tage bis Geburtstag: " + tage);
// Datum in Zukunft
LocalDate in30Tagen = heute.plusDays(30);
System.out.println("In 30 Tagen: " + in30Tagen);
}
}16.4 Scanner (Tastatureingabe)
⌨️ Tastatureingabe lesen
java
import java.util.Scanner;
public class ScannerBeispiel {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// String lesen
System.out.print("Name: ");
String name = scanner.nextLine();
// Ganze Zahl lesen
System.out.print("Alter: ");
int alter = scanner.nextInt();
// Double lesen
System.out.print("Gehalt: ");
double gehalt = scanner.nextDouble();
System.out.println("Hallo " + name + ", " + alter + " Jahre, " + gehalt + " €");
scanner.close();
}
}⚠️ Achtung: nextInt() und nextLine() Problem!
java
import java.util.Scanner;
public class ScannerProblem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Alter: ");
int alter = scanner.nextInt(); // Liest nur Zahl, nicht Zeilenumbruch!
System.out.print("Name: ");
String name = scanner.nextLine(); // Liest übrigen Zeilenumbruch!
// Lösung: Extra nextLine() nach nextInt()
// oder: Alles als String lesen (nextLine()) und konvertieren
scanner.close();
}
}Lösung:
java
import java.util.Scanner;
public class ScannerLoesung {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Alter: ");
int alter = Integer.parseInt(scanner.nextLine()); // Als String lesen, dann konvertieren!
System.out.print("Name: ");
String name = scanner.nextLine();
System.out.println("Name: " + name + ", Alter: " + alter);
scanner.close();
}
}📝 Zusammenfassung
In diesem Kapitel hast du gelernt:
- ✅
Randomfür Zufallszahlen - ✅
Mathfür mathematische Funktionen - ✅
Date/LocalDatefür Datum - ✅
Scannerfür Tastatureingabe
💡 Merksatz für Anfänger
"
Randomfür Zufall,Mathfür Rechnen,Scannerfür Eingabe!"
🎯 Nächste Schritte
Im nächsten Kapitel lernst du:
- IODatenströme (Einstieg) (Kapitel 17)
- Was sind IOströme?
- Dateien lesen/schreiben
Bereit für IO? Los geht's! 🚀
📚 Weiterführende Links:
💬 Fragen?
Hinterlassen Sie einen Kommentar!
