Rechercher : dans
Par :

Java et string

Dernière réponse le 9 mai 2008 à 19:55:57 jlag, le 8 mai 2008 à 07:30:46 
 Signaler ce message aux modérateurs

Bonjour,

j'ai une petite question

Je voudrais utiliser cette ligne

String sites = JOptionPane.showInputDialog("Entrer un ou plusieurs sites a organiser");

puis celle-ci

char[] tabsites = sites.toCharArray();

Mais le compilateur bloque sur la deuxième, il dit qu'il ne trouve pas de variables sites dans ma classe....

Configuration: Windows XP
Firefox 2.0.0.14

Meilleures réponses pour « Java et string » dans :
Framework de test StrutsTestCase (Partie 1): Présentation VoirPrésentation générale Les différentes approches de test Liste des jars du framework StrutsTestCase Présentation du Framework de test StrutsTestCase Présentation générale Le framework de test StrutsTestCase, des applications JAVA JEE est...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...
Javascript - L'objet String VoirLes particularités de l'objet String string est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de caractères. L'objet String est un objet qui contient un certain nombre de propriétés et de méthodes permettant la manipulation...

1

jlag, le 8 mai 2008 à 10:47:55

C'est bon j'ai trouvé.

Sinon j'ai un petit probleme. Je déclare une string dans le main, et le compilateur refuse de les prendre après, toujours dans le main, en justifiant :"variable might not have been initialized

Répondre à jlag

2

Marco la baraque, le 8 mai 2008 à 10:48:54

Bonjour,
Même si tes deux variables sont effectivement dans la même classe, il faut que "sites" soit visible dans le bloc de "tabsites". A mon avis ton problème est que "sites" doit être instancié dans une méthode, et que tu essaies de le lire à l'extérieur de cette méthode.
Pour avoir une visibilité dans toute la classe, déclare "sites" comme attribut:

import...
public Class MaClasse{
private String sites;

public void maMethode(){
sites = JOptionPane.showInputDialog("Entrer un ou plusieurs sites a organiser");
}

public void maMethode2(){
char[] tabsites = sites.toCharArray();
}
}

Répondre à Marco la baraque

3

jlag, le 8 mai 2008 à 11:11:08

Merci Marco, c'est effectivement un probleme de bloc, mais un peu plus compliqué...

En fait j'ai trois variables que je devais initialiser :
- à la déclaration
- à un moment précis de l'execution

et avec les bloc elles ne pouvaient pas etre visibles entre elles comme il l'aurait fallu....

Je vais m'en tirer en créant des doublons, a moins que quelqu'un ai une idée pour déclarer et initialiser les variables suivantes sur 2 lignes :

String rep = JOptionPane.showInputDialog("Entrer un ou plusieurs sites a organiser");
char tabrep[]=rep2.toCharArray();
inputValue = JOptionPane.showInputDialog("Entrer un choix entre 1 et 7");

Répondre à jlag

4

jlag, le 8 mai 2008 à 11:37:14

1. Quelqu'un sait comment aller à l'adress x d'un tableau (x étant un entier positif ?



2. J'ai un autre probleme :


mon source

95 String tabsites[]; //1 tableau contenant les sites choisis
96 tabsites[0] = "0";

et le compilateur me renvoie :

variable tabsite might not have been initialized

j'y comprends rien.

Répondre à jlag

5

danimo, le 9 mai 2008 à 02:16:19

Salut,

L'initialisation d'un tableau est l'operation dont le resultat est la creation d'un objet tableau. Les tableaux Java sont de taille fixe. L'initialisation devra donc indiquer la taille du tableau.

Syntaxe :

tabx = new String[taille];

taille est le nombre d'elements maxi.

Exemples :

tabx = newString [30]; tabx poura contenir 30 elements NUMEROTES de 0 a 29.

autre forme :

String[] tabx;
tabx = new String[30];

Comment acceder a un element apres "chargement" du tableau (par exemple le 6eme):

String un_element = tabx[5];

Cordialement.

Dan.

Répondre à danimo

6

 Marco la baraque, le 9 mai 2008 à 19:55:57

Hello,

En fait j'ai trois variables que je devais initialiser :
- à la déclaration
- à un moment précis de l'execution 


Il ne faut pas tout confondre. Il y a instanciation et initialisation.
L'instanciation est le fait de déclarer physiquement une variable, et ainsi définir son espace de visibilité.
L'initialisation est le fait d'allouer de l'espace mémoire pour ta variable, et de donner une valeur initiale à cette variable. Rien ne t'empêche d'instancier ton objet et de ne l'initialiser que plus tard.

Si tous tes paramètres font partie d'une seule et même classe, alors il n'y a aucun problème : tu les déclares en tant qu'attributs d'instance et tu as une visibilité dans toute ta classe. Si par contre tu les utilises dans plusieurs classes, il faut les passer en paramètre lorsque tu appelles une méthode.


Concernant tes deux autres questions...
1/Quelqu'un sait comment aller à l'adress x d'un tableau (x étant un entier positif ? 

Bah je ne comprends pas très bien ta question, mais si tu as un char[] tableau, tu peux très bien faire un tableau[2]...
Je ne sais pas si ça répond à ta question (ça ne retourne pas l'adresse mais l'objet stocké à cette adresse).

2/variable tabsite might not have been initialized 

C'est une erreur classique qui arrive parfois quand tu instancies une variable dans un bloc. Si je traduis, ça veut dire "ta variable 'tabsite' peut ne pas avoir été initialisée".
Voici un exemple de cas dans lequel on a cette erreur:
...
public String actionBidon(String chaine) {
if(chaine.equals("toto")) {
String retour = "valide!";
}

return retour;
}
...

Dans cet exemple, tu vois bien que si tu ne passes pas dans la condition, ta variable retour n'a pas été instanciée ni initialisée, et donc ça ne peut que planter.
Tu as la même erreur si tu as le code suivant:
...
public String actionBidon(String chaine) {
String retour;
if(chaine.equals("toto")) {
retour = "valide!";
}

return retour;
}
...


Par contre, si tu initialises ta variable en dehors de ta condition, tu n'auras pas d'erreur !
...
public String actionBidon(String chaine) {
String retour="invalide";
if(chaine.equals("toto")) {
retour = "valide!";
}

return retour;
}
...


En espérant que ça t'aide !

Répondre à Marco la baraque
Collection CommentÇaMarche.net