Skip to content

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

MethodeBeschreibungBeispiel
Math.abs(x)AbsolutwertMath.abs(-5)5
Math.max(a, b)MaximumMath.max(10, 20)20
Math.min(a, b)MinimumMath.min(10, 20)10
Math.pow(a, b)PotenzMath.pow(2, 3)8.0
Math.sqrt(x)WurzelMath.sqrt(9)3.0
Math.round(x)RundenMath.round(3.14)3
Math.ceil(x)AufrundenMath.ceil(3.14)4.0
Math.floor(x)AbrundenMath.floor(3.14)3.0
Math.random()Zufall 0.0-1.0Math.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:

  • Random für Zufallszahlen
  • Math für mathematische Funktionen
  • Date / LocalDate für Datum
  • Scanner für Tastatureingabe

💡 Merksatz für Anfänger

"Random für Zufall, Math für Rechnen, Scanner fü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!

Frei für alle Anfänger