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 , problème de débutant (tableau dynamique)

jcpasparler
jcpasparler
Niveau 3
22 avril 2015 à 23:17:21

Bonjour je possède un main , un fichier classe "Table.java" et un fichier "ManipulationTable.java"

Dans le main je fais un Table tab = new Table[0]; pour dire 0 valeurs pour l'instant (je veux, comme en C, faire du tableau d'objets "Table" un tableay dynamique.

Et dans ManipulationTable.java j'ai :

	public static boolean ajouterTable(Table tab[], String name){
		if(tableExiste(tab, name) == true){
			System.out.println("La table '" + name + "' existe deja.");
			return false;
		}
		
		Table temp[] = new Table[tab.length + 1];
		
		if(tab.length > 0){
			for(int i = 0; i < tab.length; i++){
				temp[i] = tab[i];
			}
		}
		
		temp[tab.length] = new Table(name);
		tab = temp;
		temp = null;
		
		return true;
	}

en gros j'ajoute une case à mon tableau de Table, tout marche lors de la compile or aucune table n'est "enregistrée" et le tableau de grandit pas ...

J'ai essayé un temp[tab.length].setName(name) mais ça me met une erreur et je ne comprends pas pourquoi ? :ouch:

Est-ce que c'est du au fait que j'ai un public static boolean ? (un static) ? en réalité je sais même pas ce que signifie static, des fois quand je le met eclipse m'indique une erreur enfin bref ça me perturbe trrop, du coup je le laisse que quand il m'indique pas d'erruer :snif:

(je programmais sur C avant (c'était tellement plus simple les sizeof mais j'avoue que la manipulation des chaines de caractere me laissait perplexe ... et le language objet Java me perturbe vraiment trop mais je dois vraiment gérer en Java)

merci ^^

jcpasparler
jcpasparler
Niveau 3
22 avril 2015 à 23:17:53

ps : "tableExiste(...)" fonctionne :)

Tharsis20
Tharsis20
Niveau 10
23 avril 2015 à 00:28:13

Bonjour,

Dans le main je fais un Table tab = new Table[0]; pour dire 0 valeurs pour l'instant (je veux, comme en C, faire du tableau d'objets "Table" un tableay dynamique.

C'est peut-être le problème. C'est pas censé changer, une fois que tu fixes la taille d'un vecteur elle reste telle quelle. D'ailleurs je vois pas à quel moment dans ton code c'est censé changer. :hap:
Utilise plutôt un objet de type ArrayList<Table> par exemple pour ce que tu cherches à faire. :ok:

DirectX11
DirectX11
Niveau 6
23 avril 2015 à 01:10:32
ArrayList<Table> list = new ArrayList<Table>();
for(Table truc : foo )
{
    list.add(truc);
}

ce sera plus simple :ok:

doc :
https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#method.summary

Message édité le 23 avril 2015 à 01:12:04 par DirectX11
Bunyan
Bunyan
Niveau 17
23 avril 2015 à 08:45:52

list.addAll(tfoo);
Ce sera encore plus simple :)

Sinon, en Java, les tableaux ne sont pas dynamiques, ils sont statiques. Un tableau déclaré avec une taille de 5 aura une taille de 5 toute sa vie. Il n'est pas possible d'augmenter ou de diminuer, juste de remplir plus ou moins. C'est entre autre pour cette raison que les tableaux sont peu utilisés et qu'on préfère les collections (List, Map, Set) en Java. Ceux-ci n'ont pas cette contrainte de taille fixe.

Le mot clef "static" signifie "ce que je décris existe indépendamment de sa classe". La classe de déclaration n'a pas besoin d'être créée pour y avoir accès. C'est une manière de faire du globale, pour les constantes et les méthodes utilitaires.

Bunyan
Bunyan
Niveau 17
23 avril 2015 à 09:36:24

Ou

list.addAll(Arrays.asList(foo));

Si c'est un tableau qu'il faut ajouter.

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