Question tableau 2 dimensions [Résolu]

azerty_qwerty
Messages postés
37
Date d'inscription
vendredi 23 mars 2018
Dernière intervention
20 septembre 2018
- 27 juin 2018 à 01:30 - Dernière réponse : azerty_qwerty
Messages postés
37
Date d'inscription
vendredi 23 mars 2018
Dernière intervention
20 septembre 2018
- 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
Afficher la suite 

Votre réponse

9 réponses

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

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

Donc 200 colonnes et 3 lignes

Jérémy
Commenter la réponse de choukie12
jordane45
Messages postés
23209
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 novembre 2018
- 27 juin 2018 à 12:26
0
Merci
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]


choukie12
Messages postés
55
Date d'inscription
vendredi 11 mars 2016
Dernière intervention
27 juin 2018
- 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
Commenter la réponse de jordane45
KX
Messages postés
15820
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 novembre 2018
- Modifié par KX le 27/06/2018 à 13:12
0
Merci
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 ?
Commenter la réponse de KX
azerty_qwerty
Messages postés
37
Date d'inscription
vendredi 23 mars 2018
Dernière intervention
20 septembre 2018
- 29 juin 2018 à 00:25
0
Merci
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.
azerty_qwerty
Messages postés
37
Date d'inscription
vendredi 23 mars 2018
Dernière intervention
20 septembre 2018
- 29 juin 2018 à 00:36
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();
Commenter la réponse de azerty_qwerty
Twinuts
Messages postés
5292
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 novembre 2018
- 29 juin 2018 à 08:39
0
Merci
Salut,

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


KX
Messages postés
15820
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 novembre 2018
- 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.
Commenter la réponse de Twinuts
azerty_qwerty
Messages postés
37
Date d'inscription
vendredi 23 mars 2018
Dernière intervention
20 septembre 2018
- 5 juil. 2018 à 02:22
0
Merci
bien noté, j'ai créé une class à partir de "AbstractTableModel"
Commenter la réponse de azerty_qwerty

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.