Question tableau 2 dimensions

Résolu
azerty_qwerty
Messages postés
50
Date d'inscription
vendredi 23 mars 2018
Statut
Membre
Dernière intervention
7 mai 2019
- 27 juin 2018 à 01:30
azerty_qwerty
Messages postés
50
Date d'inscription
vendredi 23 mars 2018
Statut
Membre
Dernière intervention
7 mai 2019
- 5 juil. 2018 à 02:22
Bonjour,

Dans le code ci-dessous :

String[][] donnees=new String[220][3];


220 : signifie t'il 220 lignes ?
3 : 3 colonnes ?

J'ai du mal à comprendre malgré les nombreuses explications sur le net.

Merci
A voir également:

6 réponses

choukie12
Messages postés
55
Date d'inscription
vendredi 11 mars 2016
Statut
Membre
Dernière intervention
27 juin 2018
2
27 juin 2018 à 11:31
Hello,

Le premier est les colonnes, et le deuxieme les lignes.

Donc 200 colonnes et 3 lignes

Jérémy
0
jordane45
Messages postés
35477
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
356
27 juin 2018 à 12:26
Bonjour,

Contrairement à ce que dit choukie .....

c'est : LIGNES / COLONNES

Au array à 2 dimensions... un un array d'array....
par exemple :
Un array 2/5
 Monarray[2][5] 

revient à :
code java>
Monarray[0] = subarray[5]
Monarray[1] = subarray[5]


Et si on représente les "items" dans le subarray
Monarray[0] = item[0] item[1] item[2] item[3] item[4]
Monarray[1] = item[0] item[1] item[2] item[3] item[4]


0
choukie12
Messages postés
55
Date d'inscription
vendredi 11 mars 2016
Statut
Membre
Dernière intervention
27 juin 2018
2
27 juin 2018 à 13:22
C'est la même chose, rien n'est figé.
Le plus important est l'index de tes données
0
KX
Messages postés
16540
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 mai 2022
124
Modifié le 27 juin 2018 à 13:12
Bonjour,

En réalité tu fais comme tu veux. Ce n'est qu'une représentation de l'esprit (merci Excel...)

Tu peux faire
donnees[ligne][colonne]
(ce qui est généralement fait) ou
donnees[colonne][ligne]
mais ce n'est pas Java qui t'empêchera de faire l'un ou l'autre...
D'ailleurs tu pourrais très bien avoir tes données dans un String[][] sans qu'il n'y ait de notion de lignes ou de colonnes.

Remarque : Si tu fais
new String[220][3]
ça n'empêche pas des modifications ultérieures.
Exemple :
donnees[42] = new String[50];
permettra de remplacer le String[] qui est en donnees[42] par un tableau plus grand (et complètement perdre le String[3] qui était dedans au départ), on peut bien sûr faire des tableaux plus petits, voire mettre des null...

C'est pour ça qu'en général il ne faut pas trop faire de suppositions sur le code, avec des boucles du genre i < 220 et j < 3, il vaut mieux dynamiquement chercher la taille des tableaux avec donnee.length et donnees[i].length

Avec ce genre d'imbrication (un tableau qui contient d'autres tableaux) il faut surtout concevoir ton application avec une notion de conteneurs et de contenus :
Est-ce que tu veux des lignes qui contiennent des colonnes ou des colonnes qui contiennent des lignes ?
0
azerty_qwerty
Messages postés
50
Date d'inscription
vendredi 23 mars 2018
Statut
Membre
Dernière intervention
7 mai 2019

29 juin 2018 à 00:25
Merci pour les explications. C'est plus clair.

En fait je souhaite que sur chaque ligne il y aie une date (dans la première colonne sous la forme 29.06.2018), un titre (dans la seconde colonne) et une date dans la 3eme colonne sous la forme 20180629 afin de trier l'élément le plus récent en haut.

Je souhaite charger chaque date, titre et date à l'envers à partir d'un fichier .text (dans le fichier text chaque date, titre et dates à l'envers sont sur une ligne, chacun séparé par un espace tab).

Je vous ai posé cette question car en fait je souhaite que mon tableau s'agrandisse selon le chargement des données du fichier text.
0
azerty_qwerty
Messages postés
50
Date d'inscription
vendredi 23 mars 2018
Statut
Membre
Dernière intervention
7 mai 2019

Modifié le 29 juin 2018 à 00:37
Le code pour charger les données est le suivant et fonctionne bien :

String[][] donnees=new String[220][3];
String[] entetes = {"DATE", "TITRE", "date envers"};
JTable tab1 = new JTable(donnees,entetes);

try
{
BufferedReader fichier =new BufferedReader(new FileReader("/Users/moi/eclipse-workspace/DATA/donnees.txt"));
String ligne;
StringTokenizer st;
int i=0;

while ((ligne = fichier.readLine())!=null )
{
st = new StringTokenizer(ligne,"\t");

if(i>=0)
{

donnees [i][0]= st.nextToken(); //date
donnees [i][1]= st.nextToken(); //titre
donnees [i][2]= st.nextToken(); // date envers

}
i++;

}
fichier.close();
0

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

Posez votre question
Twinuts
Messages postés
5371
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
1 avril 2022
111
29 juin 2018 à 08:39
Salut,

Tu auras plus de souplesse et de possibilités en utilisant le framework collections: ICI


0
KX
Messages postés
16540
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 mai 2022
124
29 juin 2018 à 08:54
Bonjour,

Je suis d'accord, il faut arrêter les String[][] et passer à la programmation objet. Créer une classe pour contenir les données d'une ligne et faire une List ou un Set pour manipuler l'intégralité du fichier.

Remarque : StringTokenizer est obsolète depuis Java 4 et ne devrait plus être utilisé (cf. Javadoc)
"StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead."

Quant au
new BufferedReader(new FileReader(
il y a également plus simple avec
Files.readAllLines
par exemple.
Voir ta discussion précédente pour un exemple de code et pourquoi il faut arrêter de coder en vieux Java.
0
azerty_qwerty
Messages postés
50
Date d'inscription
vendredi 23 mars 2018
Statut
Membre
Dernière intervention
7 mai 2019

5 juil. 2018 à 02:22
bien noté, j'ai créé une class à partir de "AbstractTableModel"
0