CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JAVA] Deux listes

TommyVercittee
TommyVercittee
Niveau 10
19 novembre 2013 à 21:16:52

Yop. Je dois réaliser deux listes en Java.

Les deux peuvent contenir autant d'éléments que l'utilisateur le veut ( donc elles peuvent être aussi grande que le mec le souhaite ) et doit afficher un message indiquant à l'utilisateur combien d'éléments sa liste possède.

En gros si le mec entre 4 5 8 9 4 5 4 7 4 5 1 7 5 votre "votre liste contient 13 éléments ". Voilà, une liste composé de lettres et une autre composé de chiffres.

Je suis novice je suis largué. J'utilise quoi pour ça ?

Merci de m'éclairer !

Neyce
Neyce
Niveau 8
19 novembre 2013 à 21:22:42

Le but de ton truc est différent du mien mais vu que ça implique aussi une liste définie par l'utilisateur jette un œil ici :

https://www.jeuxvideo.com/forums/1-47-91174-1-0-1-0-java-instructions.htm

Va voir du coté des collections, je me bats avec depuis une heure mais c'est fait pour les listes justement ( enfin, adapté quoi ) :ok:

[-Shana-]
[-Shana-]
Niveau 10
19 novembre 2013 à 22:33:16

List, ArrayList, CopyOnWriteArrayList

CopyOnWriteArrayList dérive de ArrayList qui lui dérive de List.
CopyOnWriteArrayList permet de modifier les éléments (suppression, modifier, etc...) pendant que tu "itérites" la liste.

Bunyan
Bunyan
Niveau 17
19 novembre 2013 à 23:10:19

"itéres" ;)

J'ai beau lire et relire, je ne comprends pas les "deux listes".
L'utilisateur rempli une liste, puis tu affiche son nombre d'éléments, où est l'utilité de la seconde liste ?

TommyVercittee
TommyVercittee
Niveau 10
19 novembre 2013 à 23:22:30

Bunyan : En fait ça ça va c'est bon, l'utilisateur doit choisir entre les deux types de liste au début du programme ( j'ai instauré le choix avec un char "a" pour la liste impliquant des nombres et "b" pour la liste impliquant des lettres, c'est bon ) mais ensuite pour la liste en elle même je vois pas.

Shana : Ok, donc je dois me servir ce ça. Tu aurais un exemple ?

Pseudo supprimé
Pseudo supprimé 20 novembre 2013 à 01:01:43

Comment récupère tu les éléments ? Arguments du programme ? Une boucle avec des input de 1 caractère jusqu'au caractère spécial qui permet de stopper la boucle ?

Bunyan
Bunyan
Niveau 17
20 novembre 2013 à 08:23:41

Ahhhhh.
D'accord, sans le contexte, difficile de saisir x)

Si tu dois bien faire : ajout des entrées utilisateurs dans une liste puis affichage de la taille => il te suffit d'une List (cf Javadoc).

TommyVercittee
TommyVercittee
Niveau 10
20 novembre 2013 à 12:42:28

Ok. Je pourrais voir un exemple d'utilisation ? Je n'ai jamais vu ces trucs. La Javadoc est en anglais, même si je comprends le sens global de tout ce qui touche à l'anglais je ne peux pas encore me permettre d'apprendre des choses ou d'essayer avec cette langue pour le moment, je passerai a coté de certains trucs.

TommyVercittee
TommyVercittee
Niveau 10
20 novembre 2013 à 14:05:24

Disons pour la liste de chiffres par exemple.

Je voudrais savoir quoi importe, quoi déclarer, quoi faire.

J'adapterai ensuite pour les lettres ( et tout le reste, vu qu'on va passer un certain temps sur des listes ). Tout bonnement.

Neyce
Neyce
Niveau 8
20 novembre 2013 à 16:10:00

Utilise ArrayList ( enfin en tout cas c'est ce que j'ai fait pour mon propre programme expliqué plus haut ). Tu n'as même pas à t'embêter avec tes deux types vu qu'ArrayList fonctionne aussi bien avec l'un comme l'autre ( bon à toi d'adapter oui ).

Un exemple :

--------------------

import java.util.ArrayList;

public class Exemple {

public static void main(String[] args) {

ArrayList al = new ArrayList();
al.add(2);
al.add("Ce truc fonctionne aussi");
al.add(3.0);
al.add('d');

for(int i = 0; i < al.size(); i++)
{
System.out.println("donnée à l'indice " + i + " = " + al.get(i));
}

}
}

----------------

Voilà.

jc-angel
jc-angel
Niveau 10
20 novembre 2013 à 19:44:29

j'ajoute 2 petit précision. Si tu veux parcourir juste ta liste sans te préoccupé des indice tu peux faire :
for (Object o : al) {
System.out.println(o)
}

tu peux faire une liste de ce que tu veux (mon vdd a fais une liste d'objet).

si tu veux faire une liste d'entier uniquement
ArrayList<Integer> al = new ArrayList<Interger>()

et pour le parcours :
for (Integer i : al) {
System.out.println(i)
}

avantage meilleur typage. En effet al.get(i) et le for retourne des Integer (plutot que des objet) ce qui te permet de les traiter comme des entier sans "Cast"
exemple :
ArrayList<Integer> al = new ArrayList<Interger>()
al.add(2);
int x = al.get(0) * 2
// x est égale a 4

TommyVercittee
TommyVercittee
Niveau 10
20 novembre 2013 à 19:58:50

Ok je commence à comprendre.

On met quoi, par contre, dans "<interger>" ?

C'est quoi, en fait ?

jc-angel
jc-angel
Niveau 10
20 novembre 2013 à 20:04:56

tu met <Integer> Si tu veux des entier <String> pour des chaine etc

En gros la syntaxe c'est <"Un objet">

je sais pas si tu a vue la programmation objet (avec java) ?
En gros int, float, (et d'autre) sont des type dit primitif ce ne sont pas des objet (ils n'étendent pas la class Objet de java).
Integer c'est comme un int sauf que c'est un objet (ça ce manipule de la même façon, tu peux additionné des int et des Integer, mettre un Integer dans un int etc)

Quand tu creer en java une classe c'est automatiquement un objet.
exemple
public class couple {

}

jc-angel
jc-angel
Niveau 10
20 novembre 2013 à 20:07:06

tu met <Integer> Si tu veux des entier <String> pour des chaine etc

En gros la syntaxe c'est ArrayList<"Un objet"> al = new ArrayList<"Un objet">()

je sais pas si tu a vue la programmation objet (avec java) ?
En gros int, float, (et d'autre) sont des type dit primitif ce ne sont pas des objet (ils n'étendent pas la class Objet de java). tu peux pas faire ArrayList<int>
En gros Integer c'est comme un int sauf que c'est un objet (ça ce manipule de la même façon, tu peux additionné des int et des Integer, mettre un Integer dans un int etc)

Quand tu crée en java une classe c'est automatiquement un objet.
exemple
public class Couple {
int x;
int y;
}

tu peux donc faire ArrayList<Couple> al = new ArrayList<Couple>()

Bunyan
Bunyan
Niveau 17
20 novembre 2013 à 21:23:24

@TommyVercittee : ce qui est entre chevron est un mécanisme de Java introduit dans Java 1.6 nommé "type générique". Au vu de tes connaissances actuelles, à mon avis, ce n'est pas le moment de les regarder.

TommyVercittee
TommyVercittee
Niveau 10
21 novembre 2013 à 20:10:51

Ouais je suis encore un gros novice, jusqu'à maintenant je gérais assez bien avec les variables conditions et boucles mais maintenant qu'on s'attaque à ce truc ( nan pas encore vu la progra objet ) je suis largué.

Bon. Mais il y a quelque chose que je ne comprends pas. Il est dit qu'ArrayList consiste en gros à un tableau sans taille définit ( en gros ) donc dans mon programme l'utilisateur devrait vraiment être libre d'entrer autant d'éléments qu'il le souhaite.

Alors pourquoi il y a ce : al.add()

Par exemple ? Dans mon code actuel, la saisie de l'utilisateur va entre ces deux parenthèses en gros. Mais comment faire en sorte qu'il y en ai une nouvelle qui se libère pour la saisi suivante ? Parce que sinon la valeur qui suivra remplacera celle tapée précédemment.

:/

TommyVercittee
TommyVercittee
Niveau 10
21 novembre 2013 à 20:11:46

( donc la liste ne sera jamais composé de plusieurs éléments mais d'un seul )

[-Shana-]
[-Shana-]
Niveau 10
21 novembre 2013 à 20:21:47

Bah non justement. .add(truc); permet d'ajouter un élément sans supprimer ceux précédents. Si tu veux changer, tu fais .set(index, nouvel objet); :ok: .

TommyVercittee
TommyVercittee
Niveau 10
21 novembre 2013 à 21:14:41

Bien ! Donc voici mon programme-test ( un brouillon donc destiné à m’entraîner sur cette histoire d'ArrayList avant de m'occuper du programme qui m’intéresse ) :

-----------------

import java.util.Scanner;

import static java.lang.System.out;

import java.util.ArrayList;

public class New1 {

private static Scanner sc;

public static void main(String[] args) {

char reponse = 'O';
sc = new Scanner(System.in);
ArrayList<Integer> al = new ArrayList<Integer>();

out.print("Lancer le programme ? (O/N) : ");
reponse = sc.nextLine().charAt(0);

while (reponse == 'O')
{
out.print("=> ");
int a = sc.nextInt();
al.add(a);
}

}

}

----------------

Chaque saisie est prise en compte par le programme ?

[-Shana-]
[-Shana-]
Niveau 10
22 novembre 2013 à 17:40:27

Oui.

Tu peux vérifier ça par toi même si tu veux. Après "al.add(a);" ajoute :

for(Integer i : al) System.out.println(i);

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment