IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

1er programme en JAVA


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut 1er programme en JAVA
    Bonjour,

    Je suis nouveau ici et je suis un peu perdu. J'ai décidé de venir sur ce forum car je fais face à un projet d'informatique assez compliqué pour mon niveau. C'est la première année où j'apprends à coder en JAVA donc je suis encore novice.

    Cependant, je dois arriver à faire un programme et je me retrouver bloquer car je n'ai pas les compétences ni les outils pour tenter de le faire. J'aimerai faire un programme qui lit un fichier .txt et dès qu'il y a un espace, il met le terme dans un tableau multidimensionnel. Malheureusement, malgré plusieurs recherches sur internet, je ne comprends toujours pas comment y arriver.

    Si vous pouviez m'aider, merci.

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Quel est le problème, qu'est-ce que vous n'arrivez pas à faire ?

    Est-ce la lecture du fichier, ou la détection des espaces ou l'ajout dans le tableau ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Tout d'abord, merci de votre intérêt pour ma requête.

    Alors pour la lecture du fichier ainsi que la détection des espaces, j'ai trouvé de potentiels algorithmes sur ce forum. Mais le problème est que je l'ai comprends pas et j'aimerai quand même comprendre ce que j'écris pour pouvoir m'améliorer.

    Pour la lecture du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import java.io.*;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
     
    public class Dico {
     
        public static void main(String[]args) throws IOException {
     
            try {
     
                File f = new File("Chemin du fichier");
     
                BufferedReader b = new BufferedReader(new FileReader(f));
    Ici, je ne comprends pas ce que veut dire la fonction BufferedReader b. J'ai comme hypothèse que cela veut dire que l'algorithme va lire ce fichier mais je suis pas sûr.


    Pour la détection des espaces :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int [][]Mat=new int[202][155563];
    	Dictionnaire pat = Pattern.compile(" +"); 
             String[] leTableau = pat.split(f);
    Donc la première ligne a été faite par moi et c'est pour y ranger tous les termes que je veux mettre dans ce tableau multidimensionnel. Cependant, comme précédemment, je ne vois pas ce que veux dire la fonction Pattern.complice(" +"); ainsi que la phrase juste en dessous. J'ai essayé de changer 2/3 parties car je savais qu'il y avait que mon algorithme n'allait pas fonctionner mais je ne vois pas ce qu'il faut changer.



    Par contre pour l'ajout dans le tableau, je ne vois pas comment on peut faire. J'ai tenté de faire 2 boucles "Pour" (1 pour les lignes et 1 pour les colonnes) et donc de rajouter presque terme par terme mais je ne vois pas comment on peut le mettre en place.

    Merci de vos réponses

  4. #4
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Bonjour,

    ça ne sert à rien d'essayer de programmer en tapant du code sans rien y comprendre. Il faut par exemple commencer par lire les tutos :
    https://java.developpez.com/cours/

    Entre autres la lecture des fichiers, l'objet (BufferedReader est une classe, pas une fonction) et ensuite les expressions régulières (qui sont aussi un langage à part entière). Rien de simple là-dedans malheureusement. Mais ça vient avec la pratique.

    Bon courage.

  5. #5
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Alors il faut y aller étapes par étapes.

    1. Lecture du fichier.
    Il y à plusieurs modes de lectures d'un fichier. Mais dans votre cas, avec `BufferedReader` vous allez pouvoir les caractères du fichier afin de lire une ligne après l'autre. C'est un bon début pour votre tâche.

    new FileReader(file) crée une classe capable de lire le contenu d'un fichier "local" (représenté par la classe File ou par un String étant le chemin d'accès à ce fichier). Mais ce "reader" ne permets pas directement de lire ligne par ligne, vous devez implémenter cette logique vous-même. Heureusement, ça à déjà été fait.
    new BufferedReader(reader) crée un BufferedReader qui va déléguer les tâches de bas niveau au reader (le FileReader dans votre cas). Et rajouter quelques méthodes supplémentaires telles que readLine qui vous intéresse.

    La ligne BufferedReader b n'est qu'une déclaration et affectation de votre BufferedReader à la variable b de type BufferedReader (ceci fait partie des bases du Java, il faudrait peut-être vous replonger dans la syntaxe).

    https://docs.oracle.com/javase/7/doc...ileReader.html
    https://docs.oracle.com/javase/7/doc...redReader.html


    2. Détection des espaces.
    La ligne Dictionnaire pat = Pattern.compile(" +"); me semble incorrecte. En effet, Dictionnaire à peu de chance d'être un type compatible avec le retour de la methode Pattern.compile.

    Pattern.compile(regex) est une méthode qui va lire une expression régulière; regex et produire un Matcher. La Matcher peut ensuite être utilisé pour rechercher une combinaisons de caractères.
    Dans votre exemple, votre expression régulière " +" signifie "un espace" (l'espace) "une ou plusieurs fois" (+). Notez que le caractère " " ne correspond pas aux tabulations ou autres types d'espaces, pour tous les avoir il faudrait utiliser \s.

    Nous ne savons ce qu'est pat mais dans votre cas, ce sera surement un String qui représente une ligne. Dans ce cas il ne faut pas utiliser Pattern.compile mais directement passer l'expression régulière à la méthode String.split

    https://docs.oracle.com/javase/7/doc...x/Pattern.html
    https://docs.oracle.com/javase/7/doc...a.lang.String)



    3. Ajout dans le tableau
    Vous avez choisi de travailler avec un tableau, il à donc une taille fixe et il faudra veiller à ne pas dépasser cette taille sans quoi votre programme pourrais terminer avec une exception.

    Pour travailler avec un tableau, il faut un indice pour identifier la cellule à affecter. Il faudra donc incrémenter cet indice pour changer de cellule. Dans votre cas, vous allez travailler avec un indice pour connaitre la ligne et un autre pour connaitre le mot. Avec ces deux indices (et en fonction de la structure de votre tableau) vous pourrez ajouter un mot avec l'affectation words[row][col] = word;.

    https://docs.oracle.com/javase/tutor...ts/arrays.html


    La structure générale de votre programme devrais ressembler à ceci. Mais j'oublie volontairement la gestion des erreurs et cas extrêmes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    BufferedReader lines = new BufferedReader(new FileReader(new File("...")));
     
    String line;
    int lineCount = 0;
    while ( (line = lines.readLine()) !=null ) { // Tant qu'il y à une ligne lue
        String[] words = line.split(" +");  
        for (int wordCount=0; wordCount<words.length; wordCount++) { // Pour chaque mot on incrémente wordCount
            dictionnaire[lineCount][wordCount] = words[wordCount];  // Assignation du mot à la position wordCount dans le tableau "dictionnaire" 
        }
        lineCount = lineCount + 1;
    }

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos différentes réponses.

    Tout d'abord, je suis tout à fait d'accord avec votre point de vue sur le fait que ce n'est qu'avec la pratique mais malheureusement, je n'avais jamais trouvé de mon tutoriel pour pouvoir le faire tout seul de A à Z. Maintenant, je vais pouvoir tenter de le faire de mon côté.


    Ensuite, merci pour ce programme, cela me donne au moins une idée de à quoi cela doit ressembler. Je vais essayer d'en faire un de mon côté en m'appuyant sur ce que vous avez fait. Je vais pouvoir un peu mieux comprendre comme ça.

  7. #7
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 630
    Points : 1 029
    Points
    1 029
    Par défaut
    Bonjour,

    Si vous cherchez un guide de compagnon (manuel d'apprentissage) pour apprendre à programmer en Java. Veuillez me l'indiquer en message privé, j'aie ce qu'il vous faut.

    Transact.

Discussions similaires

  1. Mon 1er programme java
    Par Just-Soft dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 19/02/2013, 14h40
  2. compiler le 1er programme java
    Par amethyste94 dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2008, 16h12
  3. Programmation objet Java
    Par vandamme dans le forum Langage
    Réponses: 4
    Dernier message: 06/06/2006, 19h51
  4. [livre que faire ?]Programmer en Java
    Par paterson dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/04/2006, 23h50
  5. Debutant en JAVA, problème avec 1er programme
    Par Gymerus dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 07/09/2005, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo