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 :

Appeler multiples output(resultat) qui les prend un variable à partir d'un autre class


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 Appeler multiples output(resultat) qui les prend un variable à partir d'un autre class
    Bonjours; .....Comment faire appeler multiples output(resultat) qui les prend un variable à partir d'un autre class !!! ?? !!!

    j'ai cette classe qui lire des entiers (Long) séparés par virgule le variable n1 prend les entiers avant le virgule et le variable n2= prend les variables après le virgule ok

    Maitenant je doit appeler ces deux variable à partir d'un autre classe mais la probléme que la classe juste m'affiche les dernier entiers dans le fichiers !!!! par contre dans la classe originale tut marche bien ...

    Pré_Solution: utilisation d'un tableau ? c'est à dire un tableau de type Long prend les resultat du n1 et un autre tableau pour n2 et appeler ces deux tableau a partir de l'autre classe ...Mais comment faire ça !!?


    classe 01:

    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
     
    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 : voir ligne 44

    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
     
    package application;
     
    import java.io.IOException;
    import java.util.Arrays;
     
    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);
        }
    }

  2. #2
    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
    Bonjour,

    mais la probléme que la classe juste m'affiche les dernier entiers dans le fichiers !!!!
    Peux-tu donner un exemple de résultat ?

    En fait, à chaque fois que tu boucles sur les lignes, tu écrase tes variables n1 et n2 et donc à la fin de la boucle celles-ci ont la dernière valeur lue.

    Tu pourrais utiliser un tableau double comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    double[][] n;
    int i=0;
    while ((line = br.readLine()) != null) {
            if(!line.trim().isEmpty()){
            String[] values = line.split(",");
     
            n[i][0] = Long.valueOf( values[0]).longValue();
            n[i][1] = Long.valueOf( values[1]).longValue();
            i++;
        }
    }
    J'espère que cela t'auras aidé !


  3. #3
    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
    ça marchepas elle est plaine d'erreur !!
    mon essai me donne comme ça dans la classe originale :
    colonne1=0

    colonne2=-2

    colonne1=15

    colonne2=-4

    colonne1=50

    colonne2=0

    colonne1=556

    colonne2=5

    colonne1=473

    colonne2=4

    colonne1=562

    colonne2=10

    colonne1=821

    colonne2=15

    colonne1=109

    colonne2=8

    colonne1=22

    colonne2=20

    colonne1=333

    colonne2=15

    colonne1=111

    colonne2=13

    colonne1=909

    colonne2=12

    Mais lorse j'appelle cette classe àpartir d'un autre classe elle me donne comme ça juste les deux dernier output )
    colonne1=909

    colonne2=12

    donc il faut garder tout les valeurs de variable dans deux tableau !!!!

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Comme te l'as indiqué @francky74, tu stockes dans deux variables de classes, n1 et n2, les valeurs lues. Ces variables sont de type long et ne peuvent avoir à un instant t qu'une seule valeur. Comme ton fichier a manifestement plusieurs lignes, il reste dans ces variables après la lecture uniquement les valeurs lues de la dernière ligne.

    La solution de @francky74 est de stocker l'ensemble des valeurs de chaque variable dans un tableau à 2 dimensions, avec 2 valeurs par lignes. Cependant, il y a quelques soucis dans son exemple, et elle ne peut pas fonctionner directement.
    Aussi, il est necessaire de ne plus utiliser n1 et n2 (voire de les supprimer), mais de faire appel à n[no][0] pour n1 et n[no][1] pour n2, sachant que no est un numéro compris entre 0 et n.length,qu'il te faudra déterminer, à moins de parcourir l'ensemble des lignes du tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    double[][] n;
    int i=0;
    while ((line = br.readLine()) != null) {
            if(!line.trim().isEmpty()){
            String[] values = line.split(",");
     
            n[i][0] = Long.valueOf( values[0]).longValue();
            n[i][1] = Long.valueOf( values[1]).longValue();
            i++;
        }
    }
    Premier souci : le code se veut peut-être un exemple rapide, mais il n'est pas utilisable en l'état. La variable n remplaçant n1 et n2, il est nécessaire d'en faire une variable de classe bien sur. En revanche, éviter d'en faire des variables public que n'importe qui peut modifier n'importe comment.

    Deuxième souci : br et line ne sont pas déclarées ici, parce que l'exemple se veut probablement contextuel et complémentaire à ce que tu avais déjà écrit.
    Troisième souci : n est déclaré mais pas initialisé, donc le code ne compilera pas de toute manière. Et si tu en fais des variables de classe, ça provoquera une NullPointerException dès qu'on écrira dedans.

    Aussi faut-il se demander pourquoi un tableau de double pour y stocker des longs ?! Il faut le déclarer en long[][].
    Ensuite, le souci premier avec un tableau, c'est que pour l'initialiser, il faut en connaitre la taille, par avance, ce qui est problématique avec le type de boucle que tu utilises pour lire le fichier.
    Soit utiliser une List, éventuellement la convertir en tableau à la fin, soit utiliser Files.readAllLines(), qui retourne une liste de String, qui te restera à parcourir, à spliter, et à transformer en long, exactement comme déjà montré, ce qui, en plus te simplifiera la lecture du fichier en lui-même.

    Accessoirement, il y a également Files.lines() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    n = Files.lines(Paths.get(iciLeCheminDeTonFichier))
    		  .map(line->Arrays.stream(line.split(",")).map(Long::parseLong).mapToLong(value->value).toArray())
    		  .toArray(long[][]::new); // je n'ai pas mentionné le traitement des exceptions/erreurs
    (j'en profite entre parenthèse pour une remarque sur le chemin de ton fichier ("D:\\Doc\\java\\eq\\temperature\\src\\application\\cord.in") : éviter un accès direct à un fichier par son chemin en dur dans le code : tout le monde déjà n'a pas un lecteur D: (sans parler des OS où cette notion n'a aucun sens) ; tout le monde n'a pas nécessairement envie de créer une arborescence imposée aussi profonde (sans parler du fait qu'il s'agit visiblement du dossier de sources).


    De même, pourquoi écrire le compliqué Long.valueOf( values[0]).longValue();, alors que Long.parseLong(values[0]) fait la même chose, en plus court ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  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
    @Joel le principe de programme est le suivant :

    lire des entier de type (Long) stockée dans un fichier : le format des entier dans le fichier est le suivant :

    0,-2
    15,-4
    50,0
    556,5
    473,4
    562,10
    821,15
    109,8
    22,20
    333,15
    111,13
    909,12

    Bute01 :ce que je veux
    tableau n1 = 0 15 50 556 473 562 821 109 22 333 111 909
    tableau n=-2 -4 0 5 4 10 15 8 20 15 13 12

    Bute 02: Pourquoi j'utilise des variables publique ?

    car je veux appeler cette classe à partir d'une autre classe(courbe de temperature)et utiliser les entier qui déjà lu comme des cordonnée (abscisse et ordonné ) du courbe lors du clique sur
    une boutons qui fait le mise à jours de courbe


    Solution de Franky :j'ai pas compris sa solution mais je crois l'utilisation de deux tableau séparée est mieux car je doit parcourir les deux tableau de façon séparée dans la 2éme classe
    pour changer le abscisse et ordonnée du ''lineChart'' (courbe)


    Ce que je veux : Comment déclarer deux tableaux de type string (oublier le conversion de string to long: on va faire ça dans la 2émé classe apres remplir les 2 tableau dans la premiere classe)?


    String colonne1[] =values[i];

    String colonne2[] =values[i+1];

    je sais que ces deux ligne sont fausse (//syntaxe ) mais comment les corriger ?


    classe 01:

    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
     
     
    package application;
     
     
     
    	  import java.io.BufferedReader;
    	  import java.io.FileReader;
    import java.io.IOException;
     
    	  public class ValueReading {
     
    		 public long colonne1,colonne2;
    		 public int i;
     
     
     
    		  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];
     
     
     
     
     
    	//System.out.println("\ncolonne1="+colonne1);
     
    		// System.out.println("\ncolonne2="+colonne2);
     
    	      }}
     
     
     
    	//br.close();
    	   }
    	 }

    classe 02 : la courbe : voir la ligne 50

    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 java.util.Arrays;
     
    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);
     
     
     
         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  */  
     
         String c1[]=Vd.colonne1;
     
         String c1[]=Vd.colonne2;
     
       //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);
        }
    }

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Dubwa Voir le message
    lire des entier de type (Long) stockée dans un fichier : le format des entier dans le fichier est le suivant :
    Ça, on l'avait compris. Utilise plutôt le type long que Long (voire int vu les valeurs que tu as ça devrait être suffisant).

    Citation Envoyé par Dubwa Voir le message
    Bute 02: Pourquoi j'utilise des variables publique ?

    car je veux appeler cette classe à partir d'une autre classe(courbe de temperature)et utiliser les entier qui déjà lu comme des cordonnée (abscisse et ordonné ) du courbe lors du clique sur
    une boutons qui fait le mise à jours de courbe
    Peu importe. Pour y accèder, il vaut mieux une méthode, qui te permettra d'en contrôler l'accès (empêcher qu'on remplace le tableau, qu'on pourrisse les données...). En encore, vu que le but est uniquement de s'en servir dans une autre classe, pourquoi ne pas faire méthode statique de chargement dans l'autre classe ?

    Citation Envoyé par Dubwa Voir le message
    Solution de Franky :j'ai pas compris sa solution mais je crois l'utilisation de deux tableau séparée est mieux car je doit parcourir les deux tableau de façon séparée dans la 2éme classe
    pour changer le abscisse et ordonnée du ''lineChart'' (courbe)
    Peu importe. L'intéressant dans un tableau à 2 dimensions, c'est que tu garantis mieux le fait que chaque n1 à un n2 correspondant. Avec 2 tableaux, tu peux (plus) facilement te retrouver avec 2 tableaux de tailles différentes, ou un seul tableau et pas l'autre. Le mieux à la limite serait d'avoir un seul tableau de coordonnées, par exemple d'instances de classe XYChart.Data, puisque c'est de ça que tu as besoin au final.

    Citation Envoyé par Dubwa Voir le message
    Ce que je veux : Comment déclarer deux tableaux de type string (oublier le conversion de string to long: on va faire ça dans la 2émé classe apres remplir les 2 tableau dans la premiere classe)?
    Pourquoi stocker des String pour les convertir en long plus tard, si tu as besoin au final de long ? C'est absurde.

    Citation Envoyé par Dubwa Voir le message
    String colonne1[] =values[i];

    String colonne2[] =values[i+1];

    je sais que ces deux ligne sont fausse (//syntaxe ) mais comment les corriger ?
    On t'a déjà montré comment faire.

    Mais si je reprends tout ce qui a été dit et les nouvelles informations, je verrais bien juste une méthode statique qui retourne une liste de points :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static List<XYChart.Data> loadPoints(String filename) {
    		return Files.lines(Paths.get(filename))
    				    .map(line-> line.split(","))
    				    .map(coord-> new XYChart.Data(Long.parseLong(coord[0]), Long.parseLong(coord[1])))
    				    .collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
    	}
    Et pour t'en servir dans ton autre classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ValueReading.loadPoints().stream().forEach(point-> series1.getData().add(point));
    Tout simplement. Sans tortiller avec 2 tableaux de String à convertir en 2 tableaux de Long, à convertir en chépaquoi de XYChart.Data.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Macro qui met à jour un Workbook à partir d'un autre
    Par Sanny80 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/11/2009, 09h31
  2. Réponses: 1
    Dernier message: 14/08/2009, 08h50
  3. Appel d'interface a partir d'une autre classe
    Par harris_macken dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 20/07/2009, 15h31
  4. Réponses: 3
    Dernier message: 01/02/2009, 00h05
  5. appel d'une autre frame à partir d'une autre classe
    Par oceane751 dans le forum AWT/Swing
    Réponses: 18
    Dernier message: 19/01/2008, 06h41

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