Tableau à deux dimension

Résolu
cs_dunith Messages postés 100 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 11 avril 2008 - 17 janv. 2008 à 14:02
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 18 janv. 2008 à 14:18
bonjour
j'ai déclaré un tableau à deux dimensions comme suit:
//déclaration des variables
String sCmd;
 char nbParamIn, nbParamOut, nbCaracAtt;

char[][] TabComd = new char[10][15];
 char[][] TabComd ={{0,"", 0, 0},
    {nbParamIn,"STA", nbParamOut,nbParamOut},
    {nbParamIn,"RPM", nbParamOut,nbParamOut},
    {nbParamIn,"SBY", nbParamOut,nbParamOut}};

mais il affiche une erreur....

    quelq'un peut me dire comment je doit le déclarer et l'initialiser
      je suis débutante en java,
Merci

17 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
18 janv. 2008 à 11:58
Salut,

au plus simple tu fais comme suit :

la classe TParamCmd.java :

public class TParamCmd {
    private byte    nbParamIn;
    private String    idCmd;
    private byte    nbParamOut;
    private byte    nbCaracAtt;

    public TParamCmd(byte nbParamIn, String idCmd, byte nbParamOut,
            byte nbCaracAtt) {
        this.nbParamIn = nbParamIn;
        this.idCmd = idCmd;
        this.nbParamOut = nbParamOut;
        this.nbParamIn = nbParamIn;
    }

    public byte getNbParamIn() {
        return nbParamIn;
    }

    public void setNbParamIn(byte nbParamIn) {
        this.nbParamIn = nbParamIn;
    }

    public String getIdCmd() {
        return idCmd;
    }

    public void setIdCmd(String idCmd) {
        this.idCmd = idCmd;
    }

    public byte getNbParamOut() {
        return nbParamOut;
    }

    public void setNbParamOut(byte nbParamOut) {
        this.nbParamOut = nbParamOut;
    }

    public byte getNbCaracAtt() {
        return nbCaracAtt;
    }

    public void setNbCaracAtt(byte nbCaracAtt) {
        this.nbCaracAtt = nbCaracAtt;
    }

}

l'utilisation :
TParamCmd[] ParamCmd = {
                new TParamCmd((byte) 0, "", (byte) 0, (byte) 0),
                new TParamCmd((byte) 0, "STA", (byte) 0, (byte) 78),
                new TParamCmd((byte) 1, "RPM", (byte) 0, (byte) 8),
                new TParamCmd((byte) 1, "SBY", (byte) 0, (byte) 8) };

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
18 janv. 2008 à 14:18
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title>
</title>
<meta name="GENERATOR" content="OpenOffice.org 2.3 (Linux)" />
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
Salut,

le problème c'est
que les struct en java ça n'existe pas... en gros en C++ tu vois que les struct sont plus ou moins
équivalentes à un objet java dans le sens ou tu les considères plus
comme des objets (une struc peut utiliser le mot clé new pour l'instancier, un objet C++ peut hériter d'une struct, etc...); maintenant pour ce qui est de l'initialisation,
en java contrairement au c/c++ tu dois obligatoirement passer par le
constructeur de l'objet (ou les setteurs de ton objet).

PS : Si tu as eu l'aide escompté
merci de valider la ou les réponses qui ont résolus le
problème.









------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
3
KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
17 janv. 2008 à 15:02
    Bonjour,

C'est normal si tes tableaux ont le meme nom ? Sinon essaie de mettre un String, parce qu'à un moment tu fais "SBY" et ca c'est un String il me semble ....

Kenza
0
cs_dunith Messages postés 100 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 11 avril 2008
17 janv. 2008 à 15:41
bonjour

en faite la première ligne c'est la déclaration du tableau:
char[][] TabComd = new char[10][15];

et la deuxième ligne c'est pour initialiser le tableau
char[][] TabComd ={{0,"", 0, 0},
    {nbParamIn,"STA", nbParamOut,nbCaracAtt},
    {nbParamIn,"RPM", nbParamOut,nbCaracAtt},
    {nbParamIn,"SBY", nbParamOut,nbCaracAtt}};

mais vu que un tableau à deux dimensions, il est fait que pour le même type de donnée, mais pour mon cas j'ai un string et un char........

donc la seule solution c'est de créer une classe struct (vu struct en C n'existe pas en java)......mais je ne sais pas commet affecter cette struct comme un tableau........

quelq'un peut me dire s'il y a un exemple sur le net ou sur le forum, si possible de me l'envoyer,
j'éspère que j'ai bien expliqué car je suis débutante......

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
17 janv. 2008 à 16:05
    Euuh,

Pour ce qui est de :
char[][] TabComd ={{0,"", 0, 0},
    {nbParamIn,"STA", nbParamOut,nbCaracAtt},
    {nbParamIn,"RPM", nbParamOut,nbCaracAtt},
    {nbParamIn,"SBY", nbParamOut,nbCaracAtt}};
Là tu redéclares ton tableau en char[][] ... Pour faire une simple initialisation tu fais juste un:
TabComd ={{0,"", 0, 0},
    {nbParamIn,"STA", nbParamOut,nbCaracAtt},
    {nbParamIn,"RPM", nbParamOut,nbCaracAtt},
    {nbParamIn,"SBY", nbParamOut,nbCaracAtt}};

Concernant l'équivalent de struct en Java c'est Enum.
Sinon, est ce que tes nbParamIn et Out sont obligatoirement des chars, tu peux mettre un string ou faire :

TabComd ={{0,'', 0, 0},
    {nbParamIn,'STA', nbParamOut,nbCaracAtt},
    {nbParamIn,'RPM', nbParamOut,nbCaracAtt},
    {nbParamIn,'SBY', nbParamOut,nbCaracAtt}};

Je ne sais pas si ça marche ça, à revérifier :)
0
cs_dunith Messages postés 100 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 11 avril 2008
17 janv. 2008 à 16:22
bonjour

après avoir déclaré mon tableau;
je l'ai initialisé comme suit:
TabComd ={{0,'', 0, 0},
    {nbParamIn,'STA', nbParamOut,nbCaracAtt},
    {nbParamIn,'RPM', nbParamOut,nbCaracAtt},
    {nbParamIn,'SBY', nbParamOut,nbCaracAtt}};

mais il me met une erreur: expected

et pourtant je l'ai déclaréau départ?

merci
0
KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
17 janv. 2008 à 16:38
Il me semble que tu ne dois pas spécifier la taille de ton tableau quand tu fais des { }.
et qu'il faut faire directement:

char[][] TabComd ={{0,'', 0, 0},
    {nbParamIn,'STA', nbParamOut,nbCaracAtt},
    {nbParamIn,'RPM', nbParamOut,nbCaracAtt},
    {nbParamIn,'SBY', nbParamOut,nbCaracAtt}};

Sinon, tu peux faire un tabComd[1][1] ainsi de suite ...
0
cs_dunith Messages postés 100 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 11 avril 2008
17 janv. 2008 à 17:01
bonjour

l'erreur de tout à l'heure,elle n'est plus, en mettant
comme vous m'avez dit:
char[][] TabComd ={{0,'', 0, 0},
    {nbParamIn,'STA', nbParamOut,nbCaracAtt},
    {nbParamIn,'RPM', nbParamOut,nbCaracAtt},
    {nbParamIn,'SBY', nbParamOut,nbCaracAtt}};

par contre il me met une erreur:
empty character literal : à cause de ''
et unclosed character literal à cause de 'STA', car c'est une chaine de caractère.......

je ne sais pas comment je doit déclaré STA, RPM, SBY qui sont des string qui correspondent aux noms des commandes.

vous avez une idée?
0
KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
17 janv. 2008 à 17:11
    Euh pour le empty character met un null à la place,
Concernant les STA Mmmm, c'est assez délicat, vu que c'est carrément un String et que pour convertir tu peux convertir STA en tableau de char de telle sorte que tu auras: 'S', 'T' et 'A' ....
Ma question as tu besoin d'avoir un tableau de chars ? et est ce qu'un tableau de string ne t'aiderait pas ?
0
cs_dunith Messages postés 100 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 11 avril 2008
17 janv. 2008 à 17:22
bonjour;

ce que j'ai compris mettre mon tableau à deux dimensions en string, comme suit
String[][] TabComd ={{0,'', 0, 0},
    {nbParamIn,'STA', nbParamOut,nbCaracAtt},
    {nbParamIn,'RPM', nbParamOut,nbCaracAtt},
    {nbParamIn,'SBY', nbParamOut,nbCaracAtt}};
mais nbParamIn , nbParamOut, nbCaracAtt se sont des bytes et non des string; à part si je vais les convertir en string?

comment vous pensez?
0
KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
17 janv. 2008 à 17:28
    Bonjour,

Oui, ca me semble une bonne idée, tu peux les convertir en String ça passera mieux :) ou faire je pense un new String(nbParamOut) par exemple :) ...
0
cs_dunith Messages postés 100 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 11 avril 2008
17 janv. 2008 à 17:33
bonjour

j'ai trouver une méthode de la classe string qui convertit un caractère en chaine de caractère;
c'est la méthode: ValueOf

vous saviez sur cette méthode?

merci
0
KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
17 janv. 2008 à 17:38
    Qu'il suffit de faire un valueOf(paramIn) là ou tu veux mettre tes paramIn en String.. Cette fonction te renvoit un String et prend en paramétre, soit un entier / long / char ou Objet ...

Kenza
0
KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
17 janv. 2008 à 17:40
Ca donnerait un truc du style:

    String[][] TabComd ={{0,"", 0, 0},
    {valueOf(nbParamIn),"STA",valueOf( nbParamOut),valueOf(nbCaracAtt)},
ainsi de suite :)
0
cs_dunith Messages postés 100 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 11 avril 2008
17 janv. 2008 à 17:53
bonjour

je l'ai mis mais apparament il ne voit pas cette méthoe ValueOf:
il met cette erreur:cannot resolve symbol ; method ValueOf (byte)
merci
0
cs_dunith Messages postés 100 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 11 avril 2008
18 janv. 2008 à 11:31
bonjour

pour le tableau à deux dimensions, j'ai abondonné,
la seule solution est de créer une classe TParamCmd ailleurs, comme suit:

class TParamCmd
{
      public byte nbParamIn; 
       public String idCmd;
       public byte nbParamOut;
       public byte nbCaracAtt;



}

et puis dans ma  classe TATHMProtocole qui est déclarée ailleurs que la précédente:

j'ai déclaré et initialise mon tableau de type TParamCmd, comme suit :
TParamCmd[] ParamCmd = {{0,"", 0, 0},
                                              {0,"STA", 0, 78},
                                              {1,"RPM", 0, 8},
                                              {1,"SBY", 0, 8}};
mais il me mit une erreur : illegal initializer for TParamCmd, à cause des {

vous pouvez me dire comment je dois déclarer et initialise mon tableau de la classe TParamCmd, ou m'envoyer un exemple qui est sur le net.....

merci et encore une fois je suis vraiment débutante de ce langage et je travaille sur l'envoi de commnde de l'API vers les pompes via RS232.

                                                                    
0
cs_dunith Messages postés 100 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 11 avril 2008
18 janv. 2008 à 13:40
salut

vous m'avez sauvez.........ça marche nickel......
 j'ai une questionà vous posez:
donc pour déclareret utiliser les struct (en C++),  en Java il faut les déclarer comme vous m'avez montré si dessus? 
merci encore .
0
Rejoignez-nous