Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/04/2011, à 18:03

Destroyers

JAVA : programme simple, problème de tableau [RESOLU]

Bonjour tout le monde, mon problème est simple, j'essaie d'apprendre a utiliser un tableau en Java, or je n'y arrive pas, mais j'ai fait tout les sites possibles et imaginables, mais aucune réponse sur les erreurs de mon programme:
merci à ceux qui voudrons bien m'aider à trouver, analyser, comprendre et corriger ces erreurs.

public class Tableau {
    String joueurs[] = new String[4];
    joueurs[0]="David";
    joueurs[1]="Daniel";
    joueurs[2]="Anna";
    joueurs[3]="Gregory";
    
        public static void main(String[]args){
            int i = (Math.random()*3); //l a variable i a une valeur aléatoire
            System.out.println(joueurs[ i ]); // il y a des espaces entre les crochets sinon le forum de ne voulais pas envoyer le message
            /* doit afficher le nom du joueur
             correspondant à la valeur de i*/
    }
}

Dernière modification par Destroyers (Le 30/04/2011, à 18:37)

Hors ligne

#2 Le 30/04/2011, à 01:03

BlenderViking

Re : JAVA : programme simple, problème de tableau [RESOLU]

Salut Destroyers, voici à quoi ressemble ton code corriger :

package tab; // il est déconseillé d'utiliser le package par défaut

public class Tableau {

        /* Tu as oublié de préciser le type de déclaration de la variable (private, protected, public)
           Tu dois précisé que ton tableau de String est static vu qu'il sera utilisé dans une méthode static */
        private static String joueurs[] = new String[4];
    
        public static void main(String[]args){
            int i = (int) (Math.random()*3); 
            // Tu dois casté (convertir) le résultat de ton nombre random (Double) pour le transformer en int
          
            joueurs[0]="David";
            joueurs[1]="Daniel";
            joueurs[2]="Anna";
            joueurs[3]="Gregory";
          
           System.out.println(joueurs[ i ]); // il y a des espaces entre les crochets sinon le forum de ne voulais pas envoyer le message
            /* doit afficher le nom du joueur
             correspondant à la valeur de i*/
    }
}

Sinon vu que tu débutes en java, je ne peux que te conseiller la lecture de ce cours : http://java.developpez.com/livres/javaEnfants/.

Il est vraiment bien écrit pour apprendre les bases du java et de la POO de zéro ;-)


ASUS M51Se AS018C - Intel Core 2 Duo T8300 - 3 Gb RAM - ATI Mobility Radeon HD 3470
ASUS X77J-TY014V - Intel Core i7-720QM - 4 Gb RAM - ATI Mobility Radeon HD 5730

Hors ligne

#3 Le 30/04/2011, à 08:37

Lumin0u

Re : JAVA : programme simple, problème de tableau [RESOLU]

j'imagine que l'intérêt de l'indice aléatoire est d'avoir un joueur du tableau au hasard?
à ce moment là, il faut pas multiplier Math.random() par 3 mais par joueurs.length (4 dans notre cas).
je m'explique:
Math.random() retourne un nombre flottant entre 0 (inclu) et 1 (exclu), donc si on le multiplie par un nombre entier n, le résultat sera forcément un flottant entre 0 inclu et n exclu. vu qu'ensuite on cast ce résultat en int (ce donne la partie entière du flottant), on obtient un entier entre 0 inclu et n - 1 inclu, ce qui correspond à tous les indices possibles du tableau.

Dernière modification par Lumin0u (Le 30/04/2011, à 10:39)

Hors ligne

#4 Le 30/04/2011, à 11:33

Destroyers

Re : JAVA : programme simple, problème de tableau [RESOLU]

Merci beaucoup pour vos réponses smile

mais on est obligé de mettre le tableau dans une méthode ?
je veux dire, on peut pas mettre le tableau en tant que variable membre (attribut) ?

PS: BlenderViking, c'est avec ce tuto que j'apprends le java ^^ j'en suis au chapitre 5, apprendre a faire une fenêtre graphique tongue

Dernière modification par Destroyers (Le 30/04/2011, à 11:49)

Hors ligne

#5 Le 30/04/2011, à 13:24

Lumin0u

Re : JAVA : programme simple, problème de tableau [RESOLU]

oui on peut très bien avoir des attributs tableaux

Hors ligne

#6 Le 30/04/2011, à 13:27

Destroyers

Re : JAVA : programme simple, problème de tableau [RESOLU]

Ok, bah je n'y arrive pas x)
par contre le code de  BlenderViking fonctionne smile
mais en mettent la tableau en attribut sa marche pas
pourtant tout me parait correct hmm


public class Tableau {
    static String joueurs[]= new String[4];
        joueurs[0]="David";
        joueurs[1]="Daniel";
        joueurs[2]="Anna";
        joueurs[3]="Gregory";
   
    public static void main(String[]args){
       
            int i = (int)(Math.round(Math.random()*3)); //la variable i a une valeur aléatoire
            System.out.println(joueurs[ i ]);
            /*doit afficher le nom du joueur
             correspondant à la valeur de i*/
    }
}

Dernière modification par Destroyers (Le 30/04/2011, à 13:32)

Hors ligne

#7 Le 30/04/2011, à 14:11

BlenderViking

Re : JAVA : programme simple, problème de tableau [RESOLU]

Il est important de définir l'accès de la variable membre lorsque l'on fait de la POO. Cela permet de définir quelles sont les "zones" dans laquelle aura effet la variable :

Public - La variable sera accessible depuis n'importe quelle classe qui a accès à la classe ou l'élément est défini.
Protected - La variable sera accessible depuis la classe mère, ainsi que ses éventuelles classes fille.
Private - La variable ne sera accessible que dans la classe mère qui l'a créée.

Chose importante à savoir : Le niveau d'accès par défaut est la valeur public. Il est conseillé d'utiliser le type private pour respecter le principe d'encapsulation et d'utiliser des méthodes pour modifier depuis une autre classe les valeurs de ses variables. L'intérêt principal d'éviter les éléments public est que cela te permet de rendre ton code plus flexible : Tu pourrais par exemple partagé ta classe à un autre programmeur sans qu'il aie à se soucier d'une quelconques dépendances envers une variable externe.

Quand l'élément static, il permet de manipuler une variable / méthode sans devoir créer d'objet (par exemple, le Math.random() est une méthode static: tu n'as pas dû créer d'objet Math pour utiliser la méthode random de celui-ci).

Sinon, je ne pense pas que l'on puisse donner du contenu aux variables / tableaux / objets en dehors d'une méthode (j'avoue n'avoir jamais fait le test, donc j'en metterai pas ma main aux feux^^).

Dernière modification par BlenderViking (Le 30/04/2011, à 14:12)


ASUS M51Se AS018C - Intel Core 2 Duo T8300 - 3 Gb RAM - ATI Mobility Radeon HD 3470
ASUS X77J-TY014V - Intel Core i7-720QM - 4 Gb RAM - ATI Mobility Radeon HD 5730

Hors ligne

#8 Le 30/04/2011, à 14:40

Lumin0u

Re : JAVA : programme simple, problème de tableau [RESOLU]

non effectivement on ne peut pas mettre des instructions dans la portée de la classe. on ne peut y faire que des déclarations/initialisations.
pour mettre des instructions à exécuter à la création de la classe (l'équivalent static du constructeur), il y a les blocs static.
donc en gros, au lieu de:

joueurs[0]="David";
joueurs[1]="Daniel";
joueurs[2]="Anna";
joueurs[3]="Gregory";

il faut mettre:

static {
    joueurs[0]="David";
    joueurs[1]="Daniel";
    joueurs[2]="Anna";
    joueurs[3]="Gregory";
}

Hors ligne

#9 Le 30/04/2011, à 18:37

Destroyers

Re : JAVA : programme simple, problème de tableau [RESOLU]

Merci, vos réponses sont à la perfection wink
tout marche smile
à la prochaine.

Hors ligne