Création d'une application pratique
Maintenant que nous avons exploré diverses techniques pour gérer les valeurs nulles dans la concaténation de chaînes de caractères, appliquons ce que nous avons appris pour créer une petite application pratique. Cela permettra de consolider notre compréhension et de montrer comment utiliser ces techniques dans un scénario réel.
Dans cette étape, nous allons créer un programme qui formate les informations de profil utilisateur, en gérant les valeurs potentiellement nulles dans divers champs.
-
Créez un nouveau fichier Java nommé UserProfileFormatter.java dans le répertoire /home/labex/project.
-
Ajoutez le code suivant au fichier :
import java.util.StringJoiner;
import java.util.Objects;
public class UserProfileFormatter {
public static void main(String[] args) {
// Utilisateur complet avec tous les champs
formatUserProfile("John", "Doe", "john.doe@example.com", "Software Developer", "New York");
// Utilisateur avec certains champs nuls
formatUserProfile("Alice", "Smith", null, "Data Scientist", null);
// Utilisateur avec uniquement le nom
formatUserProfile("Bob", "Johnson", null, null, null);
// Utilisateur avec des informations minimales
formatUserProfile(null, "Williams", "robert@example.com", null, null);
// Utilisons notre méthode utilitaire
User user1 = new User("Sarah", "Connor", "sarah@skynet.com", "Freedom Fighter", "Los Angeles");
System.out.println("\nFormatted user1 profile:");
System.out.println(formatUserInfo(user1));
User user2 = new User("James", null, null, "Student", "Boston");
System.out.println("\nFormatted user2 profile:");
System.out.println(formatUserInfo(user2));
}
public static void formatUserProfile(String firstName, String lastName,
String email, String occupation, String city) {
System.out.println("\n------ User Profile ------");
// Formater le nom complet en utilisant StringJoiner
StringJoiner nameJoiner = new StringJoiner(" ");
if (firstName != null) nameJoiner.add(firstName);
if (lastName != null) nameJoiner.add(lastName);
String fullName = nameJoiner.toString();
System.out.println("Name: " + (fullName.isEmpty() ? "Not provided" : fullName));
// Email avec vérification de nullité en utilisant l'opérateur ternaire
System.out.println("Email: " + (email != null ? email : "Not provided"));
// Occupation avec Objects.toString()
System.out.println("Occupation: " + Objects.toString(occupation, "Not provided"));
// Ville avec vérification de nullité en utilisant if-else
String cityInfo;
if (city != null) {
cityInfo = city;
} else {
cityInfo = "Not provided";
}
System.out.println("City: " + cityInfo);
System.out.println("---------------------------");
}
// Une méthode utilitaire plus complète pour formater les informations utilisateur
public static String formatUserInfo(User user) {
if (user == null) {
return "No user information available";
}
StringBuilder builder = new StringBuilder();
builder.append("------ User Profile ------\n");
// Gérer le nom
StringJoiner nameJoiner = new StringJoiner(" ");
if (user.getFirstName() != null) nameJoiner.add(user.getFirstName());
if (user.getLastName() != null) nameJoiner.add(user.getLastName());
String fullName = nameJoiner.toString();
builder.append("Name: ").append(fullName.isEmpty() ? "Not provided" : fullName).append("\n");
// Gérer l'email
builder.append("Email: ").append(user.getEmail() != null ? user.getEmail() : "Not provided").append("\n");
// Gérer l'occupation
builder.append("Occupation: ").append(Objects.toString(user.getOccupation(), "Not provided")).append("\n");
// Gérer la ville
builder.append("City: ").append(Objects.toString(user.getCity(), "Not provided")).append("\n");
builder.append("---------------------------");
return builder.toString();
}
// Classe User pour représenter un utilisateur
static class User {
private final String firstName;
private final String lastName;
private final String email;
private final String occupation;
private final String city;
public User(String firstName, String lastName, String email, String occupation, String city) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.occupation = occupation;
this.city = city;
}
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public String getEmail() { return email; }
public String getOccupation() { return occupation; }
public String getCity() { return city; }
}
}
-
Enregistrez le fichier en appuyant sur Ctrl+S ou en sélectionnant File > Save dans le menu.
-
Compilez et exécutez le programme Java :
cd ~/project
javac UserProfileFormatter.java
java UserProfileFormatter
Vous devriez voir une sortie similaire à la suivante :
------ User Profile ------
Name: John Doe
Email: john.doe@example.com
Occupation: Software Developer
City: New York
---------------------------
------ User Profile ------
Name: Alice Smith
Email: Not provided
Occupation: Data Scientist
City: Not provided
---------------------------
------ User Profile ------
Name: Bob Johnson
Email: Not provided
Occupation: Not provided
City: Not provided
---------------------------
------ User Profile ------
Name: Williams
Email: robert@example.com
Occupation: Not provided
City: Not provided
---------------------------
Formatted user1 profile:
------ User Profile ------
Name: Sarah Connor
Email: sarah@skynet.com
Occupation: Freedom Fighter
City: Los Angeles
---------------------------
Formatted user2 profile:
------ User Profile ------
Name: James
Email: Not provided
Occupation: Student
City: Boston
---------------------------
Dans cet exemple, nous avons créé une application réelle qui formate les informations de profil utilisateur, qui contiennent souvent des valeurs nulles ou manquantes. Décomposons ce qui se passe :
-
Nous avons utilisé différentes techniques de gestion des valeurs nulles dans la méthode formatUserProfile :
- StringJoiner pour combiner les parties du nom
- Opérateur ternaire pour l'email
- Objects.toString() pour l'occupation
- Instruction if-else pour la ville
-
Nous avons créé une méthode formatUserInfo plus complète qui prend un objet User et gère les valeurs potentiellement nulles dans tous les champs.
-
La classe User démontre un scénario courant où des données peuvent manquer pour certains champs.
Cet exemple pratique montre comment les techniques que nous avons apprises peuvent être appliquées à des scénarios réels. Le code est robuste et gère les valeurs nulles avec élégance, en fournissant du texte par défaut ("Not provided") lorsque des informations sont manquantes.