Var might not have been ini...java

Résolu/Fermé
findizy Messages postés 65 Date d'inscription jeudi 20 mars 2008 Statut Membre Dernière intervention 16 août 2011 - 6 nov. 2009 à 14:51
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 - 6 nov. 2009 à 20:40
Bonjour,

Je ne vois pas comment modifier mon code pour ne plus avoir l'erreur de compilation suivante à la ligne 20
variable tab might not have been initialized tab = new int[tab.length]

Merci d'avance

Voila mon code:

import ordinateur.*;
import objetMathematique.*;

class exind13_103bis
{
public static int compterNbrDeNbrImpairsApresNbrPairs(int [] tab)
{
	int i = 0; //compteur
	for(int a = 0; a < tab.length - 1; a++)
	{ 
		if(((tab [a]%2) == 0) && ((tab [a+1]%2) == 1))
			{ i++; }
	}
	return i;
}
public static void main(String [] args)
{ 
	int i= 0;  //compteur de nombre
	int [] tab;
	tab = new int[tab.length];
	int j = tab.length;
	int k = 0;  //élément du tableau
	int b = tab[k];
	int c = 0; //numéro de l'élément*/
	System.out.println("Veuillez entrer la taille de votre tableau");
	j = clavier.lireUnInt();
		for(j=0; j < tab.length; j++)
		{       b=tab[k+1];
			System.out.println("Veuillez rentrer une valeur pour l'element "+c);
			b = clavier.lireUnInt();
			c = c + 1;
		}
	System.out.println("Voici votre tableau");
	for(int t = 0; t < tab.length; t++)
		{
		System.out.println(tab[t]);
		}
	i = compterNbrDeNbrImpairsApresNbrPairs(tab);
	System.out.print("Dans ce tableau on a "+i);
	System.out.print(" fois un nombre pair suivi par un nombre impair.");
}
}

^
A voir également:

4 réponses

Bonjour,

Que souhaitais tu faire avec les deux lignes de code suivantes ?
int [] tab;
tab = new int[tab.length];

La première déclare un tableau d'entiers ; dont l'espace mémoire n'est pas encore alloué.
Dans la seconde, tu tente d'allouer la mémoire, mais tab.length est inutilisable car la mémoire n'est pas encore allouée ;
(C'est logique, tu ne peux pas récupérer la taile de qqch qui n'est pas encore alloué en mémoire...)

Bref, c'est incohérent et je ne comprends pas ce que tu souhaites faire.
Pourrais-tu expliquer ? Quelle taille de tableau souhaite tu allouer ?

Tu pourrais faire par exemple ca, pour allouer un tableau de 10 entiers :
tab = new int[10];

Cordialement,
Marc C.
0
findizy Messages postés 65 Date d'inscription jeudi 20 mars 2008 Statut Membre Dernière intervention 16 août 2011 1
6 nov. 2009 à 15:15
en fait je voudrais que l'utilisateur choisisse lui meme la taille du tableau... puis qu'il choisisse les valeurs a mettre dedans... (avec la boucle for)

mon programme fonctionne deja quand je mets la taille et les elements par défaut.
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
6 nov. 2009 à 17:04
Hello again,

En fait je voudrais que l'utilisateur choisisse lui meme la taille du tableau... puis qu'il choisisse les valeurs a mettre dedans... (avec la boucle for)

Tu ne peux pas vraiment faire ceci avec un tableau (taille fixe, déclarée au moment de la compilation); par contre, une collection de type java.util.List ferait très bien l'affaire (nombre d'éléments non défini à la compilation). Tu peux utiliser un ArrayList (qui implémente l'interface List), par exemple.

++
0
Bonjour,

"Tu ne peux pas vraiment faire ceci avec un tableau (taille fixe, déclarée au moment de la compilation);"

Désolé de contredire ; Mais en JAVA, il est possible de faire celà avec un tableau alloué dynamiquement.

-tu déclare ton tableau : int tableau[];
-tu fais saisir à l'utilisateur un entier dans une variable int saisieUtilisateur;
-et ensuite tu alloue ton tableau avec la saisie de l'user : tableau=new int[saisieUtilisateur];

Cordialement,
Marc
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722 > swed
6 nov. 2009 à 20:40
Oui, c'est vrai. Et il n'y a pas de mal pour me contredire =)

Merci d'avoir mis en évidence mon erreur.

++
0
findizy Messages postés 65 Date d'inscription jeudi 20 mars 2008 Statut Membre Dernière intervention 16 août 2011 1
6 nov. 2009 à 17:20
Je fais cet exercice dans le cadre d'un cours donc je n'ai pas le "droit" d'utiliser certaines commandes non vue au cours... j'ai fixer la taille du tableau moi même (plus simple)

Merci beaucoup pour ton aide.

bonne continuation
0