Gérer la conversion d'entrées de type chaîne de caractères
Dans les applications du monde réel, vous avez souvent besoin de récupérer des entrées de l'utilisateur, et ces entrées sont généralement lues sous forme de String
. Pour effectuer des vérifications numériques telles que déterminer si l'entrée représente un entier, vous devez d'abord convertir la String
en un type numérique, comme double
.
Dans cette étape, nous allons modifier notre programme pour prendre l'entrée de l'utilisateur sous forme de String
, la convertir en double
, puis utiliser Math.floor()
pour vérifier si l'entrée originale représentait un entier.
Ouvrez le fichier IntegerCheck.java
dans l'éditeur du WebIDE.
Remplacez le code existant par le suivant :
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
}
}
}
Examinons les nouvelles parties du code :
import java.util.Scanner;
: Cette ligne importe la classe Scanner
, qui est utilisée pour lire les entrées depuis la console.
Scanner scanner = new Scanner(System.in);
: Cela crée un objet Scanner
qui lit les entrées depuis le flux d'entrée standard (System.in
), qui est généralement le clavier.
System.out.print("Enter a number: ");
: Cette ligne invite l'utilisateur à entrer un nombre.
String input = scanner.nextLine();
: Cela lit la ligne entière d'entrée saisie par l'utilisateur sous forme de String
et la stocke dans la variable input
.
try { ... } catch (NumberFormatException e) { ... }
: Il s'agit d'un bloc try-catch
. Il est utilisé pour gérer les erreurs potentielles. Dans ce cas, nous essayons de convertir l'entrée String
en double
. Si l'entrée n'est pas un nombre valide (par exemple, "hello"), une NumberFormatException
se produira, et le code à l'intérieur du bloc catch
sera exécuté.
double number = Double.parseDouble(input);
: C'est la partie cruciale de la conversion. Double.parseDouble()
est une méthode statique de la classe Double
qui tente de convertir une String
en une valeur double
.
finally { scanner.close(); }
: Le bloc finally
garantit que la méthode scanner.close()
est appelée, libérant les ressources système utilisées par le Scanner
, que l'exception se soit produite ou non.
Enregistrez le fichier IntegerCheck.java
.
Maintenant, compilez et exécutez le programme depuis le terminal dans le répertoire ~/project
:
javac IntegerCheck.java
java IntegerCheck
Le programme attendra maintenant que vous entriez une saisie.
Essayez d'entrer un entier, comme 42
, puis appuyez sur Entrée. La sortie devrait être :
Enter a number: 42
The input '42' represents an integer.
Exécutez le programme à nouveau et entrez un nombre non entier, comme 3.14
, puis appuyez sur Entrée. La sortie devrait être :
Enter a number: 3.14
The input '3.14' does not represent an integer.
Exécutez le programme une dernière fois et entrez quelque chose qui n'est pas un nombre, comme test
, puis appuyez sur Entrée. La sortie devrait être :
Enter a number: test
Invalid input: 'test' is not a valid number.
Cela démontre comment gérer l'entrée de l'utilisateur sous forme de String
, la convertir en un type numérique, puis appliquer notre vérification Math.floor()
tout en gérant les erreurs potentielles dues à des entrées invalides.