Lisez un code Java existant, manipulez des données et gérez des erreurs simples

Dans les chapitres précédents, vous avez préparé votre environnement Java, écrit des instructions simples et organisé des informations dans une classe. Dans ce dernier chapitre, vous allez prendre un peu de recul : au lieu d’écrire uniquement du code isolé, vous allez apprendre à vous repérer dans une petite structure de code existante.

L’objectif est de savoir identifier les fichiers importants, suivre le point d’entrée du programme, lire une méthode simple, manipuler des données issues d’un fichier et comprendre les erreurs les plus fréquentes sans vous perdre dans tous les détails de Java.

Repérez les fichiers importants

Un programme Java est souvent organisé dans plusieurs fichiers. Pour commencer, ne cherchez pas à tout comprendre en même temps. Repérez d’abord les fichiers qui vous aident à comprendre le fonctionnement général.

Voici un exemple de structure simple :

src/
├── Main.java
├── Product.java
└── products.csv

Dans les chapitres précédents, vous avez parfois écrit directement le nom, le prix ou le stock d’un produit dansmain. C’est pratique pour apprendre une notion isolée, car tout est visible au même endroit. Mais dans un programme un peu plus réaliste, on sépare progressivement les responsabilités : le code qui lance le programme, le code qui décrit une donnée, et les données elles-mêmes.

Dans cette structure :

  • Main.javacontient le point de départ du programme ;

  • Product.javadécrit la structure d’un produit ;

  • products.csvcontient des données sur les produits.

Ces noms ressemblent à ce que vous avez déjà vu, et c’est volontaire.Product.javareprend la classeProductdu chapitre précédent : c’est le fichier Java qui contient la description d’un produit.products.csv, lui, contient plusieurs produits concrets sous forme de texte, par exemple leurs noms, leurs prix et leurs stocks.

La différence principale est donc la suivante : un fichier.javacontient du code que Java peut compiler et exécuter ; un fichier.csvcontient des données, souvent organisées en lignes et séparées par des virgules. Java ne “lance” pas directement le fichier CSV : le programme Java le lit pour utiliser les informations qu’il contient.

Suivez le point d’entrée du programme

Quand vous lisez un code Java existant, commencez par chercher la méthodemain. C’est elle qui indique où le programme commence à s’exécuter.

Par exemple :

public class Main {
    public static void main(String[] args) {
        System.out.println("Chargement des produits...");
    }
}

Ce programme commence dans la méthodemain, puis exécute l’instruction placée à l’intérieur. Ici, la console affiche :

Chargement des produits...

Pour lire ce code, observez d’abord ce que le programme affiche, puis retrouvez la ligne qui produit cet affichage, puis regardez dans quelle méthode et dans quelle classe cette ligne se trouve.

Suivez une méthode appelée depuismain

Dans le chapitre 3, vous avez déjà vu qu’une méthode permet de regrouper une logique sous un nom. Ici, vous allez apprendre à lire un code existant en suivant le chemin d’exécution depuismain.

Voici un exemple complet :

public class Main {
    public static void main(String[] args) {
        displayProduct("Sac à dos", 12);
    }

    public static void displayProduct(String name, int stock) {
        System.out.println(name + " - stock : " + stock);
    }
}

Commencez par observer le résultat affiché :

Sac à dos - stock : 12

Pour comprendre ce résultat, revenez au point de départ du programme : la méthodemain. Dansmain, une seule ligne lance la suite du traitement :

displayProduct("Sac à dos", 12);

Cette ligne ne produit pas directement l’affichage. Elle appelle une autre méthode,displayProduct, et lui envoie deux valeurs :"Sac à dos"et12.

Repérez ensuite la méthode qui porte le même nom :

public static void displayProduct(String name, int stock) {
    System.out.println(name + " - stock : " + stock);
}

Les valeurs envoyées depuismainarrivent dans les paramètres de cette méthode."Sac à dos"arrive dansname, et12arrive dansstock. La ligne d’affichage utilise ensuite ces deux paramètres pour construire le message affiché dans la console.

Pour lire ce type de code, suivez donc toujours le même chemin :

  • partez demain;

  • repérez la méthode appelée ;

  • retrouvez la méthode qui porte le même nom ;

  • suivez les valeurs envoyées dans les paramètres ;

  • identifiez la ligne qui produit le résultat visible.

Manipulez des données issues d’un fichier

Un programme Java peut utiliser des données écrites dans un fichier. Pour commencer simplement, imaginez un fichierproducts.csvqui contient une ligne par produit :

Sac à dos,45.90,12
Carnet,4.50,0
Stylo,1.20,30

Chaque ligne contient ici trois informations séparées par des virgules : le nom du produit, son prix et son stock.

Pour lire un fichier, Java a besoin d’outils qui ne sont pas écrits directement dans votre classeMain. Ces outils existent déjà dans Java, mais vous devez les rendre disponibles dans votre fichier avec des lignesimport.

Voici l’exemple complet :

import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

public class Main {
    public static void main(String[] args) throws Exception {
        List<String> lines = Files.readAllLines(Path.of("products.csv"));

        for (String line : lines) {
            System.out.println(line);
        }
    }
}

Dans cet exemple, les lignes qui commencent parimportsont placées tout en haut du fichier. Elles indiquent à Java que le programme va utiliser des classes déjà fournies par Java :

  • Filespermet de lire le contenu d’un fichier ;

  • Pathpermet d’indiquer le chemin du fichier à lire ;

  • Listpermet de stocker plusieurs lignes de texte.

Vous n’avez pas besoin de mémoriser ces imports. Retenez surtout leur rôle : ils permettent d’utiliser des outils Java prêts à l’emploi dans votre propre code.

Commencez par observer le résultat : le programme lit le fichier, puis affiche chaque ligne dans la console.

Sac à dos,45.90,12
Carnet,4.50,0
Stylo,1.20,30

Dans cet exemple :

  • Path.of("products.csv")indique le fichier à lire ;

  • Files.readAllLines(...)lit toutes les lignes du fichier ;

  • List<String> linesstocke ces lignes sous forme de liste de textes ;

  • la boucleforparcourt les lignes une par une ;

  • System.out.println(line);affiche chaque ligne.

À ce stade, vous n’avez pas besoin de connaître toutes les possibilités de lecture de fichiers en Java. Retenez surtout le cheminement : le programme cible un fichier, lit ses lignes, puis les parcourt.

Transformez une ligne CSV en informations utilisables

Afficher une ligne entière est utile pour vérifier que le fichier est bien lu. Mais ensuite, vous voudrez souvent séparer les informations de cette ligne.

Les exemples qui suivent partent d’un fichier au format CSV (Comma-Separated Values), où chaque ligne contient des valeurs séparées par des virgules. La technique de découpage avecsplit(",")est adaptée à ce format précis : d’autres formats (JSON, XML, YAML…) demandent des outils différents que vous découvrirez plus tard.

Par exemple, à partir de cette ligne :

Sac à dos,45.90,12

vous pouvez séparer les valeurs avecsplit:

String line = "Sac à dos,45.90,12";
String[] parts = line.split(",");

String name = parts[0];
double price = Double.parseDouble(parts[1]);
int stock = Integer.parseInt(parts[2]);

System.out.println(name);
System.out.println(price);
System.out.println(stock);

Ce code affiche :

Sac à dos
45.9
12

La ligne suivante découpe le texte à chaque virgule :

String[] parts = line.split(",");

Après ce découpage,parts[0]contient"Sac à dos",parts[1]contient"45.90"etparts[2]contient"12".

Le nom peut rester un texte :

String name = parts[0];

Le prix et le stock doivent être convertis, car ils viennent du fichier sous forme de texte :

double price = Double.parseDouble(parts[1]);
int stock = Integer.parseInt(parts[2]);

Double.parseDoubletransforme un texte en nombre décimal.Integer.parseInttransforme un texte en nombre entier.

Gérez une erreur simple

Quand un programme lit un fichier, plusieurs problèmes peuvent arriver. Le fichier peut être absent, une ligne peut être mal écrite ou une valeur peut ne pas avoir le format attendu. En Java, ces situations peuvent produire des erreurs appelées exceptions.

Voici un exemple simple :

public class Main {
    public static void main(String[] args) {
        String stockText = "douze";
        int stock = Integer.parseInt(stockText);

        System.out.println(stock);
    }
}

Ce programme essaie de transformer le texte"douze"en nombre entier. Java ne peut pas faire cette conversion, carInteger.parseIntattend un nombre comme"12", pas un mot écrit. Le programme peut donc s’arrêter avec une erreur.

Vous pouvez entourer le code sensible avectryetcatch:

public class Main {
    public static void main(String[] args) {
        String stockText = "douze";

        try {
            int stock = Integer.parseInt(stockText);
            System.out.println(stock);
        } catch (NumberFormatException error) {
            System.out.println("Stock invalide");
        }
    }
}

Cette fois, Java essaie d’exécuter le code placé danstry. Si la conversion échoue, le programme passe danscatchet affiche un message plus compréhensible :

Stock invalide

Dans cet exemple :

  • trycontient le code qui peut provoquer une erreur ;

  • catchcontient ce que le programme doit faire si cette erreur arrive ;

  • NumberFormatExceptioncorrespond ici à une erreur de conversion de nombre.

Aller plus loin : utilisezvaravec prudence

Dans certaines bases de code Java récentes, vous pouvez rencontrer le mot-clévar. Il permet à Java de déduire le type d’une variable locale à partir de la valeur donnée.

Par exemple :

var stock = 12;

Java comprend ici questockest unint, car la valeur12est un nombre entier.

Cette syntaxe peut rendre certains codes plus courts, mais elle peut aussi être moins explicite quand vous débutez. Dans ce cours, gardez les types visibles dans les exemples principaux, commeString,int,doubleouList<String>.

À vous de jouer

Votre équipe a exporté le menu du jour au format CSV. Créez un fichier menu.csvà la racine de votre projet (encodage UTF-8) et collez-y ces 4 lignes :

Pizza,12
Salade,8
Burger,10
Tiramisu,6

Votre mission : afficher chaque plat au formatPizza — 12 €en lisant le fichier, et gérer proprement le cas où le fichier est introuvable.

import java.nio.file.Files;
import java.nio.file.Path;
import java.io.IOException;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        // Étape 1 : entourez la lecture d’un try / catch
        // Étape 2 : lisez le fichier "menu.csv"
        // Étape 3 : parcourez les lignes, découpez chaque ligne à la virgule
        //          et affichez "<nom> — <prix> €"
    }
}

Votre mission :

  1. Dans un bloctry, lisez toutes les lignes du fichiermenu.csvavecFiles.readAllLines(Path.of("menu.csv")).

  2. Pour chaque ligne, utilisezsplit(",")pour séparer le nom et le prix, puis affichezPizza — 12 €.

  3. Dans un bloccatch (IOException error), affichezMenu introuvable.

En résumé

  • Pour lire un code Java existant, commencez par la méthodemain.

  • Une méthode appelée depuismainpermet de déplacer une partie de la logique dans un bloc nommé.

  • Un fichier texte peut fournir des données que Java lit sous forme de lignes.

  • Les valeurs lues dans un fichier arrivent souvent sous forme de texte et doivent parfois être converties.

  • tryetcatchpermettent de gérer une erreur simple avec un message plus utile.

Vous avez maintenant les repères essentiels pour lire un code Java simple, manipuler des données et gérer des erreurs courantes. Pour vérifier que ces notions sont claires, passez maintenant au quiz du cours.

Et si vous obteniez un diplôme OpenClassrooms ?
  • Formations jusqu’à 100 % financées
  • Date de début flexible
  • Projets professionnalisants
  • Mentorat individuel
Trouvez la formation et le financement faits pour vous