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 :

Les tableaux en Java


Sujet :

Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 262
    Points : 157
    Points
    157
    Par défaut Les tableaux en Java
    bonsoir,

    Voilà ma première participation au forum. Je suis encore débutant et voila
    mon programme qui remplie un tableau de 2 dimensions et l'affiche. Mais apparemment, il y a un problème qui m'affiche le message
    (non static method cannot be referenced from a static context)
    C'est sur cette ligne que j'ai l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau[i][j]=sc.nextInt();
    Mon deuxième but: j'ai le tableau suivant:
    123
    456
    et je souhaite l'afficher comme ceci
    14
    25
    36
    Merci d'avance pour votre aide.

    voila mon petit programme:
    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
    package javaapplication2;
     
    import java.util.Scanner;
    public class JavaApplication2 {
        Scanner sc=new Scanner(System.in);
     
        public static  void main(String[] args) {
            int [][] tableau=new int [2][3];
            remplir (tableau);   
            afficher (tableau);
     
        }
     
        static void  remplir(int [][] tableau){
            for (int i=0;i<tableau.length;i++){
                for (int j=0;j<3;j++){
                    tableau[i][j]=sc.nextInt();
                }
            } 
        }
     
        static void afficher(int [][] tableau ){
            for (int i=0;i<=tableau.length;i++){
                for (int j=0;j<10;j++){
                    System.out.println(tableau [i][j]+"\b");
                }
            }
        } 
     }

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Bonsoir,

    Quand tu postes du code sur le forum, sois gentil de le faire entre balises CODE, l'espèce de # dans la barre d'outils.

    mais apparemment y a un problème qui m ' affiche le message
    (non static method cannot be referenced from a static context)
    c sur cette ligne qui me fait l'erreur < tableau[i][j]=sc.nextInt();>
    Non, le message d'erreur est non-static variable sc cannot be referenced from a static context

    Et il dit tout ce qu'il y a à dire. La variable membre sc est une variable d'instance, autrement dit elle n'est pas static. Or, tu cherches à y accéder dans la méthode remplir(), qui est static. On ne peut pas accéder faire appel aux membres non-static à l'intérieur d'une méthode static, c'est logiquement impossible.

    Trois possibilités :
    #1 - rendre le champ sc static. Problème résolu. De toute façon, il devrait l'être puisqu'il monopolise l'usage de System.in
    #2 - rendre la méthode remplir() non-static. Du coup, pour l'appeler, il va falloir créer une instance de ta classe. Ça se fera ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static void main(String[] args) {
      int[][] tableau=new int[2][3];
      JavaApplication2 app = new JavaApplication2();
      app.remplir(tableau);
      afficher(tableau);
    }
    Ça marche, mais c'est pas très cohérent.

    #3 - Déclarer la variable sc comme variable locale de la méthode remplir() et non pas comme une variable membre de la classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static void remplir(int [][] tableau){
      Scanner sc = new Scanner(System.in);
      // reste de la méthode
    }
    Ça marche, mais pour un Scanner sur System.in, c'est pas très propre : il vaut mieux le construire une et une seule fois quelque part dans le programme, et toujours passer par ce seul et unique Scanner.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 262
    Points : 157
    Points
    157
    Par défaut
    merci de ta réponse c'est gentil
    pour bien organiser mon code je sais pas comment faire veux tu m'expliquer comment ,j'ai pas bien compris (entre balises CODE, l'espèce de # dans la barre d'outils)
    et s'il te plait ta pas répondu a la question parlant de l'inverse du tableau voila un exemple 123
    456
    devient 14
    25
    36
    je pense que c'est pas de modifier un tableau en java si c'est vrai je veux juste pour l'affichage et merci infiniment

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Citation Envoyé par momedalhouma Voir le message
    pour bien organiser mon code je sais pas comment faire veux tu m'expliquer comment ,j'ai pas bien compris (entre balises CODE, l'espèce de # dans la barre d'outils)
    Essaie à nouveau de poster du code Java sur le forum. Mais cette fois, mets des balises CODE autour du code, en cliquant sur le bouton # de la barre d'outils.

    Citation Envoyé par momedalhouma Voir le message
    et s'il te plait ta pas répondu a la question parlant de l'inverse du tableau voila un exemple 123
    456
    devient 14
    25
    36
    Oui, nous pouvons t'aider. Quel est ton problème, qu'observes-tu qui te dérange ?

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 262
    Points : 157
    Points
    157
    Par défaut
    merci ;; je me demandais si c'est possible de modifier les dimensions d'un tableau en java ???
    sinon pour l'affichage que je cherché voila mon code:
    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
     
    package javaapplication2;
     
    import java.util.Scanner;
    public class JavaApplication2 {
     
        public static  void main(String[] args) {
     
            int [][] tableau=new int [2][3];
            int [][] tableau2=new int [3][2];
            System.out.println("entrer les valeur du tableau de 2 lignes et 3 colones ");
            remplir (tableau);  
            System.out.println("voila votre tableau de deux dimension");
            afficher (tableau);
            System.out.println("voila votre tableau inverse: ");
            inverser(tableau,tableau2);
            afficher(tableau2);
     
     
        }
       static void  remplir(int [][] tableau){
             Scanner sc=new Scanner(System.in);
             for (int i=0;i<tableau.length;i++){
                  for (int j=0;j<tableau[i].length;j++){
                    tableau[i][j]=sc.nextInt();
                  }
              }
     
         }
       static void afficher(int [][] tableau ){
     
            for (int i=0;i<tableau.length;i++){
                  for (int j=0;j<tableau[i].length;j++){
                    System.out.print(tableau [i][j]+" ");
                  }
                  System.out.println();
              }
     
        }
     
       static void inverser(int [][] tableau,int [][] tableau2){
           for(int i=0;i<3;i++){
               for(int j=0;j<2;j++){
                   tableau2[i][j]=tableau[j][i];
               }
           }
     
       }
     
    }
     
    voila un exemple:
     
    entrer les valeur du tableau de 2 lignes et 3 colones
    1
    2
    3
    4
    5
    6
    voila votre tableau de deux dimension
    1 2 3
    4 5 6
    voila votre tableau inverse:
    1 4
    2 5
    3 6
    et pour une dernière question je veux devenir un très bon développeur en java veux tu me dire les astuces et des livres que tu me conseilles??
    et merci bcp

Discussions similaires

  1. Les tableaux en Java
    Par olivier75000 dans le forum Général Java
    Réponses: 3
    Dernier message: 17/10/2013, 18h08
  2. Les tableaux en Java
    Par sheridan08 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 20/08/2012, 09h55
  3. [Avis] Les meilleurs programmes Java ?
    Par christopheJ dans le forum ImageJ
    Réponses: 69
    Dernier message: 07/10/2008, 01h12
  4. [java] Tableau (operation sur les tableaux)
    Par Jessika dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 04/01/2007, 13h40
  5. Les tableaux en PL/SQL
    Par GRUMLY dans le forum PL/SQL
    Réponses: 5
    Dernier message: 12/08/2002, 18h10

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