Umgang mit der Konvertierung von String-Eingaben
In realen Anwendungen müssen Sie oft Eingaben vom Benutzer erhalten, und diese Eingaben werden normalerweise als String
gelesen. Um numerische Prüfungen wie die Bestimmung, ob die Eingabe eine Ganzzahl darstellt, durchzuführen, müssen Sie zunächst den String
in einen numerischen Typ wie double
umwandeln.
In diesem Schritt werden wir unser Programm ändern, um die Benutzereingabe als String
zu nehmen, sie in einen double
umzuwandeln und dann Math.floor()
zu verwenden, um zu prüfen, ob die ursprüngliche Eingabe eine Ganzzahl darstellt.
Öffnen Sie die Datei IntegerCheck.java
im WebIDE-Editor.
Ersetzen Sie den vorhandenen Code durch den folgenden:
import java.util.Scanner; // Import the Scanner class
public class IntegerCheck {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Create a Scanner object
System.out.print("Enter a number: "); // Prompt the user for input
String input = scanner.nextLine(); // Read user input as a String
try {
// Convert the String input to a double
double number = Double.parseDouble(input);
// Check if the number is an integer using Math.floor()
if (number == Math.floor(number)) {
System.out.println("The input '" + input + "' represents an integer.");
} else {
System.out.println("The input '" + input + "' does not represent an integer.");
}
} catch (NumberFormatException e) {
// Handle cases where the input is not a valid number
System.out.println("Invalid input: '" + input + "' is not a valid number.");
} finally {
scanner.close(); // Close the scanner
}
}
}
Schauen wir uns die neuen Teile des Codes an:
import java.util.Scanner;
: Diese Zeile importiert die Scanner
-Klasse, die zum Lesen von Eingaben von der Konsole verwendet wird.
Scanner scanner = new Scanner(System.in);
: Dies erstellt ein Scanner
-Objekt, das Eingaben vom Standard-Eingabestrom (System.in
) liest, was normalerweise die Tastatur ist.
System.out.print("Enter a number: ");
: Diese Zeile fordert den Benutzer auf, eine Zahl einzugeben.
String input = scanner.nextLine();
: Dies liest die gesamte Zeile der vom Benutzer eingegebenen Eingabe als String
und speichert sie in der input
-Variable.
try { ... } catch (NumberFormatException e) { ... }
: Dies ist ein try-catch
-Block. Er wird verwendet, um potenzielle Fehler zu behandeln. In diesem Fall versuchen wir, die String
-Eingabe in einen double
umzuwandeln. Wenn die Eingabe keine gültige Zahl ist (z.B. "hello"), tritt eine NumberFormatException
auf, und der Code im catch
-Block wird ausgeführt.
double number = Double.parseDouble(input);
: Dies ist der entscheidende Teil für die Konvertierung. Double.parseDouble()
ist eine statische Methode der Double
-Klasse, die versucht, einen String
in einen double
-Wert umzuwandeln.
finally { scanner.close(); }
: Der finally
-Block stellt sicher, dass die scanner.close()
-Methode aufgerufen wird, um die vom Scanner
verwendeten Systemressourcen freizugeben, unabhängig davon, ob eine Ausnahme aufgetreten ist oder nicht.
Speichern Sie die Datei IntegerCheck.java
.
Jetzt kompilieren und führen Sie das Programm aus dem Terminal im Verzeichnis ~/project
aus:
javac IntegerCheck.java
java IntegerCheck
Das Programm wartet nun auf Ihre Eingabe.
Versuchen Sie, eine Ganzzahl wie 42
einzugeben und Enter zu drücken. Die Ausgabe sollte wie folgt sein:
Enter a number: 42
The input '42' represents an integer.
Führen Sie das Programm erneut aus und geben Sie eine nicht-ganzzahlige Zahl wie 3.14
ein und drücken Sie Enter. Die Ausgabe sollte wie folgt sein:
Enter a number: 3.14
The input '3.14' does not represent an integer.
Führen Sie das Programm noch einmal aus und geben Sie etwas ein, das keine Zahl ist, wie test
, und drücken Sie Enter. Die Ausgabe sollte wie folgt sein:
Enter a number: test
Invalid input: 'test' is not a valid number.
Dies zeigt, wie man Benutzereingaben als String
verarbeiten, sie in einen numerischen Typ umwandeln und dann unsere Math.floor()
-Prüfung anwenden kann, während man auch potenzielle Fehler aufgrund ungültiger Eingaben behandelt.