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

 Java Discussion :

Comment utiliser le Resultat d'une classe dans une autre classe


Sujet :

Java

  1. #1
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut Comment utiliser le Resultat d'une classe dans une autre classe
    Bonjour..... Comment faire utiliser le résultat d'une classe dans une autre classe ...j'ai cette classe qui affiche le maximum et minimum et le pas des entier (Long) qui sont dans un 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
    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
     
    package jh;
     
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
     
    public class AltitudeReading {
     
    	private static final String FILENAME = "D:\\Doc\\java\\eq\\jh\\src\\jh\\altitude.in";
     
    	public static void main(String[] args) {
     
    		try (BufferedReader br = new BufferedReader(new FileReader(FILENAME))) {
     
    			String sCurrentLine; long n;  long maxVal = Long.MAX_VALUE;
    		       long minVal = Long.MIN_VALUE; long somme = 0; long pas = 0; int j = 0;
     
     
    			while ((sCurrentLine = br.readLine()) != null) {
     
    				 n = Long.valueOf( sCurrentLine).longValue();
     
    				long array[]= {n}; 
     
    					  for(int i = 0; i < array.length; i++){
    						   j++;
     
    					         if(array[i] < maxVal)
    					           maxVal = array[i];
    					         if(array[i] > minVal)
    					           minVal = array[i];
    					          somme = somme+array[i];
     
    					          pas=somme/38;
     
     
    					       }
     
    			}
     
    			   System.out.print("\nValeur minimale = "+maxVal);
    		       System.out.print("\nValeur maximale = "+minVal);
    		       System.out.print("\nLa somme = "+somme);
    		       System.out.print("\nLe nombre de valeurs = "+j);
    		       System.out.print("\nLe pas = "+pas);
     
     
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    	}
     
    }

    Je veut utiliser le variable ''maxVal'' ; minVal ; ''pas'' dans une autre classe qui est la suivante :


    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
     
    package application;
     
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.chart.AreaChart;
    import javafx.scene.chart.NumberAxis;
    import javafx.scene.chart.XYChart;
    import javafx.stage.Stage;
     
    public class Main extends Application {
     
        @Override public void start(Stage stage) {
            stage.setTitle("Area Chart Sample");
     
     
           long a,b,pas;
            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
     
            final NumberAxis xAxis = new NumberAxis(a, b, c); // a,b,c correspand aux  minVal ,maxVal ,pas;
            final NumberAxis yAxis = new NumberAxis(-5, 27, 5);
            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("Graph1");
            series1.getData().add(new XYChart.Data(0, -2));
            series1.getData().add(new XYChart.Data(3, -4));
            series1.getData().add(new XYChart.Data(6, 0));
            series1.getData().add(new XYChart.Data(9, 5));
     
            XYChart.Series series2 = new XYChart.Series();
            series2.setName("Graph2");
            series2.getData().add(new XYChart.Data(0, 4));
            series2.getData().add(new XYChart.Data(3, 10));
            series2.getData().add(new XYChart.Data(6, 15));
            series2.getData().add(new XYChart.Data(9, 8));
     
            XYChart.Series series3 = new XYChart.Series();
            series3.setName("Graph3");
            series3.getData().add(new XYChart.Data(0, 20));
            series3.getData().add(new XYChart.Data(3, 15));
            series3.getData().add(new XYChart.Data(6, 13));
            series3.getData().add(new XYChart.Data(9, 12));
     
            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);
        }
    }

    le fichier altitude est remplie par ces valeurs :

    Code TXT : 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
    15
    50
    55
    556
    484558
    187897
    585866
    654589
    693285
    639878
    364598
    821430
    473106
    165720
    458231
    562314
    109876
    1098687662214
    8765695522266
    5544456569889
    3021558966321
    1111122233333333332
    2222222222222222222
    3333333333333333333
    4444444444444444444
    5555555555555555555
    6666666666666666666
    7777777777777777777
    8888888888888888888
    1111111111111111111
    5555555555555555555
    7777777777777777777
    3333333333333333333
    1111111111111111111
    9000000000000000000
    9000000000000000001
    9099999999999999999
    9199999999999999999

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 802
    Points : 22 773
    Points
    22 773
    Billets dans le blog
    50
    Par défaut
    Si tu souhaites conserver ton min et ton max, il te faudra sans doute les déclarer hors de la boucle, voir les mettre a une valeur indiquant qu'ils n'ont pas été initialisés (-1 par exemple si tu n'as pas à traiter des valeurs sous le niveau de la mer ?).
    Le calcul du pas, de même que les affichages n'ont pas vraiment besoin d'avoir lieu à chaque itération de la boucle, mais à la fin, une fois sorti de cette dernière.
    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
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut
    je veux utiliser le résultat de la premiere classe dans la deuxieme ? mais comment ? ...

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 802
    Points : 22 773
    Points
    22 773
    Billets dans le blog
    50
    Par défaut
    Pourquoi avoir modifié ton sujet et changé le contenu de ta première question (qui était juste de lire des valeurs dans un fichier texte) au lieu d'ouvrir un nouveau topic dédié à ton nouveau problème ?
    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

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 802
    Points : 22 773
    Points
    22 773
    Billets dans le blog
    50
    Par défaut
    Ta première classe est un programme (présence de main()), sauf a faire des bidouilles un peu inutiles dans ton cas, tu ne peux pas l'utiliser depuis ton application JavaFX. Il te faut donc remplacer ta méthode main(String[] args) par une autre méthode qui retournera un objet contenant les valeurs résultats. Et Il te faut donc aussi créer une nouvelle classe pour stocker ces résultats.

    Ensuite coté JavaFX tu vas invoquer AltitudeReading.maNouvelleMethodeAMoiQueJAi() (peut-être au chargement de l'app ou encore en réponse a un clic sur un bouton ou dans un menu) et ensuite peupler les divers graphiques avec les valeurs retournées. Dans un premier temps tu feras une invocation directe de la classe et de la méthode. Ensuite on verra comment invoquer une tache de fond pour éviter de bloquer (et planter) l'interface graphique.
    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

  6. #6
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut
    Merci j'ai réussie à faire tout....je veux maintenant ajouter une Bouton au dessous ..mais je ne connais ou je l'ajoute au scene? !!! stackPane !!? avez-vous une proposition ?
    voilà mon code après une Modification ... (voir les dernier lignes..)

    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
     
    package application;
     
    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.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) {
            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);
            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("Graph1");
            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("Graph2");
            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("Graph3");
            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("Refresh");
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("Hello World!");
                }
            });
     
     
    //OU je doit ajouter le Button ''btn'' ? je veux qu'elle soit au dessous 
     
            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);
        }
    }

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : août 2005
    Messages : 6 802
    Points : 22 773
    Points
    22 773
    Billets dans le blog
    50
    Par défaut
    On en a pas tout a fait fini avec la lecture du fichier : comme je te l'ai dit, appeler directement la méthode d'extraction des valeurs est une manière facile de faire qui est bonne quand on débute mais pas quand on veut faire un vrai logiciel. La principale raison c'est que la lecture du fichier bloque toute l'interface graphique quand elle se produit. Certes toi tu as un tout petit fichier dans cet exemple mais essaie d'imaginer ce que ça donne quand tu dois lire un fichier de plusieurs dizaines/centaines de Mo ou encore faire une requête sur une BD ou accéder aux données d'un serveur Web. Je te conseille donc d'aller lire : Tutoriel sur l'exécution d'une tâche de fond en JavaFX

    Concernant le bouton, réfléchi un peu quitte a prendre une feuille de papier ou un crayon et dessiner ce que tu veux faire comme interface graphique dessus... PS : ca aide beaucoup quand on débute.
    Une autre manière de faire c'est de télécharger SceneBuilder chez Gluon. Le but ici ce n'est pas de faire tout de suite du FXML (puisque tu débutes) mais de faire joujou avec SceneBuilder pour voir comment tu peux arriver a créer l'interface que tu veux comme ça tu sauras quels nœuds utiliser.

    Réfléchi donc un peu : ici la racine de ta scène est un graphique. Tu ne peux pas (facilement*) ajouter le bouton dedans. Tu veux avoir le bouton au-dessus du graphique donc ça ne sera pas StackPane car en JavaFX ce parent affiche tous les nœuds les uns pardessus sur les autres comme un paquet de cartes qui sont empilées. Toi tu veux le bouton en haut et le graphique en bas. Donc c'est VBox qu'il faut utiliser (VBox et HBox en JavaFX sont les équivalent de StackLayout en Xamarin, LinearLayout en Android, etc.)

    *C'est possible de le faire mais hors de tes capacités pour le moment.
    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

Discussions similaires

  1. [Debutant] comment faire passer des donnée ???
    Par cyrill.gremaud dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/01/2006, 22h28
  2. [XSL]Comment faire ceci ?? Mon for-each n'affiche pas tout !
    Par Devil666 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 27/07/2005, 15h04
  3. Réponses: 4
    Dernier message: 03/04/2005, 14h26
  4. Réponses: 17
    Dernier message: 04/02/2005, 12h05
  5. Réponses: 5
    Dernier message: 08/03/2004, 10h28

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