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 :

Comment séparer les entiers dans un fichier et le conserver dans deux variables


Sujet :

avec Java

  1. #1
    Membre confirmé
    Homme Profil pro
    UUA
    Inscrit en
    Mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 82
    Par défaut Comment séparer les entiers dans un fichier et le conserver dans deux variables
    je veux lire et afficher ces entier de façons que la première colonne sont les ''i'' et la deuxième colonne après le virgule sont les ''j'' ...comment faire ça ?

    essai :
    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
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    package application;
     
     
     
    	  import java.io.BufferedReader;
    	  import java.io.FileReader;
     
    	  public class ValueReading {
    	    public static void main(String[] args) throws Exception {
    	      BufferedReader br = new BufferedReader(new FileReader("D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"));
    	      String line = null;
     
    	      while ((line = br.readLine()) != null) {
    	        String[] values = line.split(",");
    	        for (String str : values) {
    	          System.out.println(str);
    	        }
    	      }
    	      br.close();
    	    }
    	  }

    le fichier des entiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    0,-2
    15,-4
    50,0
    556,5
    473,4
    562,10
    821,15
    109,8
    22,20
    333,15
    111,13
    909,12

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Et évite de changer complètement le contenu de la question en cours de route cette fois !

    Tu as déjà tes deux tokens sous forme de String ; quelle difficulté éprouves-tu à les convertir en int et à les stocker dans une ou plusieurs liste(s) soit dans des valeurs distinctes, soit dans un tableau ou une classe regroupant les deux ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Salut,

    Tu peux mettre en place un booléen que tu feras changer à chaque fois dans le for.
    Ainsi, tu pourras dire que si ce booléen est à true, tu met le résultat dans j, sinon dans i ... ou l'inverse :
    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
    while ((line = br.readLine()) != null) {
    	        String[] values = line.split(",");
                    int i, j;
                    boolean b = false;
    	        for (String str : values) {
                      if(b){
                         i = Integer.parseInt(str);
                         b = false;
                      } else {
                         j = Integer.parseInt(str);
                         b = true;
                      }
    	          System.out.println(str);
    	        }
    	      }
    Bien sûr, il te faut gérer tes i et j afin de pouvoir les utiliser car dans ce code ils sont écrasés à chaque tour de boucle

    Je ne suis pas sûr du Integer.parseInt(str) car je fait le code à la volée dans le navigateur mais il te faut transformer ta chaîne de caractère en un entier. Tu peux aussi ajouter un test pour voir si ton entrée est bien un numéral. Pour cela, tu peux utiliser java.commons.lang3 avec StringUtils.isNumeric


  4. #4
    Membre confirmé
    Homme Profil pro
    UUA
    Inscrit en
    Mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 82
    Par défaut
    vous ne me comprenez pas je veux que la première colonne soit ''i'' a les les entier de type Long suivant :
    i=
    0
    15
    50
    556
    473
    562
    821
    109
    22
    333
    111
    909



    j=
    -2
    -4
    0
    5
    4
    10
    15
    8
    20
    15
    13
    12

    Remarque tout les entiers de type Long
    dsl je suis débutant ...

  5. #5
    Membre confirmé
    Homme Profil pro
    UUA
    Inscrit en
    Mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 82
    Par défaut
    ok j'ai cette solution ill les affiche comme je veux mais il ya un erreyr à la fin...:

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    at application.ValueReading.main(ValueReading.java:20)

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    package application;
     
     
     
    	  import java.io.BufferedReader;
    	  import java.io.FileReader;
     
    	  public class ValueReading {
    	    public static void main(String[] args) throws Exception {
    	      BufferedReader br = new BufferedReader(new FileReader("D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"));
    	      String line = null;
    	      int i=0;
     
    	  while ((line = br.readLine()) != null) {
    	  String[] values = line.split(",");
    	   //for (String str : values) {
     
    		 String  colonne1=values[i];
     
    		 String  colonne2=values[i+1];
     
     
    		 System.out.println("\ncolonne1="+colonne1);
     
    		 System.out.println("\ncolonne2="+colonne2);
    	       // System.out.println(str);
    	  //    }
     
    	     }
     
    	br.close();
    	   }
    	 }

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    c'est parce que tu as une ligne blanche à la fin.
    Ligne blanche, donc pas de virgule, donc split() ne renvoie qu'un tableau de taille 1, donc essayer d'accéder au deuxième élément provoque ArrayIndexOutOfBoundsException.

    Au début de ta boucle, tu devrais vérifier si ta ligne est blanche, genre if(line.trim().isEmpty()), et si c'est le cas ignorer cette ligne avec continue, sans faire de split() et sans rien afficher.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé
    Homme Profil pro
    UUA
    Inscrit en
    Mars 2017
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : UUA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 82
    Par défaut
    Oui c'est vrai il ya une ligne blanche j'ai corriger tout ....Je veux Maintenant appeler le resultat de cette classe dans un autre mais la probléme qu'il affiche just les 2 derniers nombre !! je veux qu'il affiche tout les nombre comme


    ella a fait la classe 01 qui affiche tout les nombre de façon colonne01 reçoit les nombre avant le virgule et colonne 2 reçoit les nombre après le virgule:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    package application;
     
     
     
    	  import java.io.BufferedReader;
    	  import java.io.FileReader;
    import java.io.IOException;
     
    	  public class ValueReading {
     
    		 public long n1;
    		  public long n2;
     
     
    		  public ValueReading() throws NumberFormatException, IOException {
    	    //public static void main(String[] args) throws Exception {
    	      BufferedReader br = new BufferedReader(new FileReader("D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in"));
    	      String line = null;
    	      int i=0;
     
    	  while ((line = br.readLine()) != null) {
    		  if(line.trim().isEmpty()){
     
    			  //do nothing 
    		  } else {
     
    	  String[] values = line.split(",");
     
    		  String colonne1=values[i];
     
    		 String  colonne2=values[i+1];
     
     
    			 n1 = Long.valueOf( colonne1).longValue();
    		  n2 = Long.valueOf( colonne2).longValue();
     
     
    		//System.out.println("\ncolonne1="+n1);
     
    		// System.out.println("\ncolonne2="+n2);
     
    	      }}
     
     
     
    	//br.close();
    	   }
    	 }


    classe 02 :just faire une vue au début de la classe je veux appeler l'ancien classe içi mais la probleme qu'il affiche just les 2 dernier entier !! comment svp corriger ça et afficher tout les entier comme elle fait l'ancien classe ???!!!


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
     
    package application;
     
    import java.io.IOException;
     
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.chart.AreaChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.VBox;
    //import javafx.scene.layout.HBox;
    //import javafx.scene.layout.StackPane;
    //import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
     
    public class Main extends Application {
     
        @Override public void start(Stage stage) throws NumberFormatException, IOException {
            stage.setTitle("Area Chart Sample");
     
     
          long a,b,c;
            AltitudeReading  Rd =new AltitudeReading();
     
          a=Rd.minVal; //valeur minimal dans le fichier utilisée comme valeur min dans le barre d'abscisse
           b=Rd.maxVal; //valeur maximale dans le fichier utilisée comme valeur max dans le barre d'abscisse
           c = Rd.pas;    //valeur correspand au pas dans le barre d'abscisse
            System.out.print("\nValeur minimale = "+a);
    	       System.out.print("\nValeur maximale = "+b);
    	      System.out.print("\npas = "+c);
     
     
            final NumberAxis xAxis = new NumberAxis(a, b, c); // a,b,c correspand aux  minVal ,maxVal ,pas;
         final NumberAxis yAxis = new NumberAxis(-5, 27, 5);
     
         Long c1,c2;
     
         ValueReading Vd= new ValueReading(); 
     
         /* Ici je veux appeler l'autre classe pour afficher tout les entier de façon que 
         le variable ''c1'' reçoit les entier avant le vigule et le variable ''c2''
     réçoit les entier apès le vigule  */  
     
       c1=Vd.n1;
     
         c2=Vd.n2;
     
     
         System.out.print("\nc1 = "+c1);
        System.out.print("\nc2 = "+c2);
     
            final AreaChart<Number,Number> ac = 
                new AreaChart<Number,Number>(xAxis,yAxis);
            xAxis.setForceZeroInRange(true);
     
            ac.setTitle("Temperature Monitoring (in Degrees C)");       
     
            XYChart.Series series1 = new XYChart.Series();
            series1.setName("Boule1");
     
            series1.getData().add(new XYChart.Data(0, -2));
            series1.getData().add(new XYChart.Data(15, -4));
            series1.getData().add(new XYChart.Data(50, 0));
            series1.getData().add(new XYChart.Data(556, 5));
     
            XYChart.Series series2 = new XYChart.Series();
            series2.setName("Boule2");
            series2.getData().add(new XYChart.Data(473, 4));
            series2.getData().add(new XYChart.Data(562, 10));
            series2.getData().add(new XYChart.Data(821, 15));
            series2.getData().add(new XYChart.Data(109, 8));
     
            XYChart.Series series3 = new XYChart.Series();
            series3.setName("Boule3");
            series3.getData().add(new XYChart.Data(22, 20));
            series3.getData().add(new XYChart.Data(333, 15));
            series3.getData().add(new XYChart.Data(111, 13));
            series3.getData().add(new XYChart.Data(909, 12));
     
            Button btn = new Button();
            btn.setText("Live Refresh ... ");
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("Hello World!");
                }
            });
     
            btn.setTranslateX(600);
             btn.setTranslateY(10);
          // btn.setTranslateX(500);
           // btn.setTranslateY(394);
            VBox vbox = new VBox();
            Scene scene = new Scene(vbox, 1500, 1000);
            ac.getData().addAll(series1, series2, series3);
            vbox.getChildren().addAll(btn, ac);
     
            stage.setHeight(480);
            stage.setWidth(800);
     
           // primaryStage.show();
     
     
          //  Scene scene  = new Scene(ac,800,600);
            //scene.getStylesheets().add("areachartsample/Chart.css");
            ac.setHorizontalZeroLineVisible(true);
           // ac.getData().addAll(series1, series2, series3);
           stage.setScene(scene);
     
            stage.show();
        }
     
        public static void main(String[] args) {
            launch(args);
        }
    }

Discussions similaires

  1. [OpenOffice][Texte] Comment inserer les données d'un fichier texte dans un ODT ?
    Par Legentleman97420 dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 03/07/2013, 14h00
  2. Comment extraire les données d'un fichier txt dans un tableau excel
    Par mirage23 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/11/2012, 09h16
  3. Réponses: 2
    Dernier message: 22/02/2009, 13h02
  4. Comment mettre les lignes d'un fichier dans un tableau en shell
    Par Ombrius dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/10/2006, 12h34
  5. Réponses: 5
    Dernier message: 20/08/2002, 18h01

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