Comment convertir un String en Boolean ?

Signaler
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
21 août 2004
-
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
-
Bonjour,

Voilà, mon programme lit des informations d'un fichier xml, qui ne contient que des 1 et des 0.
Donc, après lecture du xml, je voudrai convertir ces 1 et 0 par des boolean.
Ayant fait :
boolean poteau, haut, bas, gauche, droite;

Poteau = Boolean.valueOf(((Node)textPoteauList.item(0)).getNodeValue().trim());

Haut = Boolean.valueOf(((Node)textUpList.item(0)).getNodeValue().trim());

Bas = Boolean.valueOf(((Node)textDownList.item(0)).getNodeValue().trim());

Gauche = Boolean.valueOf(((Node)textLeftList.item(0)).getNodeValue().trim());

Droite = Boolean.valueOf(((Node)textRightList.item(0)).getNodeValue().trim());

en sauvegardant, j'obtien ce message :
Type mismatch: cannot convert from java.lang.Boolean to boolean.

Quel est le probleme ??

32 réponses

Messages postés
351
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
9 décembre 2004

Essaie plutôt ceci:
boolean mybool (myString.compareTo("1") 0);
CQFD

NB: Vérifie que ==0 c'est quand les 2 string sont =, je suis plus certain...

B@ron {EU.BELGIUM}
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
:big) Neodante :big)

Try this :

Boolean.getBoolean(taString)

... regarde la javadoc si besoin est ...
@+

[Responsable www.neogamedev.com]
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
:big) Neodante :big)

Toutes les classes enveloppes ont des wrapper des autres types ...
@+

[Responsable www.neogamedev.com]
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
GodConan :clown)

;o) vi autrement la methode que tu use toi il faudrai que t chaine soit = a "true" ou "false" ;o) ce ki n est pas le cas...

++
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
21 août 2004

A Neodante => J'ai essayé ta méthode du Boolean.getBoolean(String), mais malheureusement, elle ne recoit rien.

Je crois que le probleme viendrait des 1 et 0 contenu dans le xml.
Donc, comme l'a dit GodConan, sa devrait venir des 1 et 0 que je devrait mettre à true ou false.

Mais vu qu'il y a 255 balise dans mon xml, je ne suis pas près d'y arrivée, je devrait complètement modifier mon générateur xml.

Si quelqu'un à d'autre proposition pour éviter une restructuration de mon xml, je suis à vous.

PS : pour l'instant, j'ai utiliser des integer au lieu des boolean.
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
GodConan :clown)

ben fai comme la di tds test ;o)

Poteau = ((Node)textPoteauList.item(0)).getNodeValue().trim().compareTo("0")==0 )?true:false;

pas dur ;o) a une parenthese pret sa doi etre sa a moin que "0" soit false je sai jamais ;o)

++
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
:big) Neodante :big)

Yep à problème simple, solution simple ... pour le Boolean c'est marquer dans la javadoc ce qu'il fait ... donc 0 ou 1 ... pas bon ... sinon une petite fonction (méthode quoi !) fait tout aussi bien l'affaire !!!
@+

[Responsable www.neogamedev.com]
Messages postés
351
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
9 décembre 2004

CQFD ou NON?
B@ron {EU.BELGIUM}
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
:big) Neodante :big)

Tout ça pour rien dire ... c'est clair je m'en excuse (le singe tricolore se prosterne ! lol) ... m'enfin faut bien s'occuper !!! lol
@+

[Responsable www.neogamedev.com]
Messages postés
351
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
9 décembre 2004

C'est pour que notre ami MetalDestroyer nous dise quoi si cela fonctionne ou pas.
NEODANTE, à propos de l'univers JAVA3D, je vais encore incorporer une sphère transparente autour de ma 'caméra' pour détecter les collisions. Tu penses que c'est une bonne idée.
Si tu as du temps, on pourrait bosser ensemble afin de réaliser une super base d'environnement 3D.

Tu as déjà trouver ce jeux en 3D d'un étudiant: arabian_1.4.jar?

B@ron {EU.BELGIUM}
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
21 août 2004

Désolé, je n'ai pas pu le tester hier, je vais le faire en ce moment même.
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
21 août 2004

Ca y est, ca marche, merci beaucoup.

J'ai pris l'exemple de tds et GodConan

Poteau = ((Node)textPoteauList.item(0)).getNodeValue().trim().compareTo("0")==0 )?true:false;

Et j'obtien bien les bon résultats.
Messages postés
351
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
9 décembre 2004

Suis bien content d'avoir pu t'aider => vais passer 1 bonne journée.

B@ron {EU.BELGIUM}
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
21 août 2004

Comment faire pour qu'un client en Visual basic puisse recevoir un message d'un serveur Java ??

Etant donnée que le serveur Java envoie un String, le client VB recoit bien quelque chose mais le message est scripté.

Y aurait il pas un driver à activer dans VB ??
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
:big) Neodante :big)

Oula attends là y a confusion entre technologie de langage et réseau ... 'Tout le monde' (en général) parle la même langue sur un réseau : le TCP/IP si tu te connectes à une socket d'un serveur, quelle soit en Java, VB, C, ou autre et que cela soit sur Unix, Linux, Windows, Mac, ... ça revient au même !
DOnc si ton message est crypté comme tu le dis c'est que le serveur Java y est pour quelque chose ... ou que ton code VB soit également en défaut ... sinon ta chaine serait lisible ... (couche application de TCP !). Avec le nombre de prog VB/Java/C/Pascal/Asm sur Win/Unix/Linux que j'ai conçu y a jamais eu de prob ... vive les sockets ! Donc l'erreur ne peut venir que de toi ...
@+

[Responsable www.neogamedev.com]
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
:big) Neodante :big)

SInon poste ton code VB et celui de Java ...
@+

[Responsable www.neogamedev.com]
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
21 août 2004

Je pense qu'il faut que je désérialise l'objet chez le client VB.
car le serveur Java envoie un objet Sérialisé, mais je ne sais pas comme désérialisé un objet sous VB.

Je vous donne le code du Serveur Java ( et plus tard, le VB,; car je ne l'ai pas sur ce PC ).

public class Connection extends Dialogue {
private int num, periodeCycle, nbCyclesRestant;
private Robot robot;
private float coordX=0, coordY=0, vitesse;
private double angle;
private StatistiqueSimulation stats;
private Grille labyrinthe;
public void run() {

int nbCyclesRestant;
ClientToServeur ordres;
ServeurToClient reponse;

//Construction du laby par défaut.
//Donc pas de prise en compte du xml

XML ReadXML = new XML();


try {
ObjectOutputStream out = new ObjectOutputStream(getSocket().getOutputStream());
ObjectInputStream in = new ObjectInputStream(getSocket().getInputStream());

//*************** Initialisation *************************************

String pipo = (String)in.readObject();
System.out.println("Msg de VB " + pipo);
//Obtenir liste des fichiers
String[] TempDir = new File("./Maps/").list();
for (int i = 0; i < TempDir.length; i++)
{
if ( TempDir[i].endsWith("dtd") )
{
TempDir[i] = "";
}
}
String[] Dir = TempDir;
//triage
java.util.Arrays.sort(Dir);
System.out.println("Liste des Labyrinthes : \n");
int nb, compteur = 1;
String nbfile = Integer.toString(Dir.length);
out.writeObject(nbfile);
for (nb = 0; nb < Dir.length; nb++)
{
if ( Dir[nb] != "" )
{
System.out.println( compteur + ". " + Dir[nb]);
out.writeObject(Dir[nb]);
compteur = compteur + 1;
} else
{
out.writeObject(Dir[nb]);
}
}
System.out.println("\n\n");
//String temp = (String)parsestring(nb);
//out.writeObject(nb);
//- VB -------------------------------
//String msg = (String)in.readObject();
// System.out.println(msg);
//------------------------------------

String selection = (String)in.readObject();
labyrinthe=choixLaby();
ReadXML.lecture("./Maps/" + selection);


//Placement de la souris dans le laby
System.out.println("Patientez quelques instants le temps de placer votre robot");
for (int i = 0; i < ReadXML.Format.Largeur; i++)
{
for (int j = 0; j< ReadXML.Format.Hauteur; j++)
{
System.out.println("X " + i + "; Y " + j);
//System.out.println("Statut : " + ReadXML.Labyrinthe[i][j].statut);
System.out.println("Statut : " + ((Case)ReadXML.laby.get(i,j)).statut /*(Case)ReadXML.laby.get(i,j)).statut)*/);if ( ((Case)ReadXML.laby.get(i,j)).statut.charAt(0) 's' ) /*ReadXML.Labyrinthe[i][j].statut "s"*/
{
//---- Placer la souris
//---- Affichage des coordonées
String Co_X = Integer.toString(i);
String Co_Y = Integer.toString(j);
out.writeObject(Co_X); // coord X
out.writeObject(Co_Y); // coord Y
System.out.println("Votre souris est à la position ");
System.out.println("X : " + i + " Y : " + j);
//---- Quitter la boucle
//return;
}
}
}

//*********** Reception des caracteristiques de simulation *******
try {
robot=(Robot)in.readObject();
} catch (ClassNotFoundException CNFexc) {
System.err.println(CNFexc);
}
nbCyclesRestant=20*60*1000/robot.getPeriodeCycle();

//************ Initialisation des statistique de simulation*********
stats= new StatistiqueSimulation();

/*******************************************************************
********************* Communication avec client-robot **************
*******************************************************************/

for(;nbCyclesRestant>0; nbCyclesRestant--) {

//************ Calcul des valeurs actuelles des capteurs ***********
reponse=calculCapteurs();
/***************** Envoi des ces valeurs au Client ****************/
out.writeObject(reponse);
/********** Reception des ordres moteurs de la reaction du robot***/
ordres=(ClientToServeur)in.readObject();
/****************** Prise en compte de ce deplacement ****************/
majServeur(ordres);

}
/******** Envoi du signal de fin de simulation*****************/
out.writeObject(new ServeurToClient(false));
/******************Envoi des statitstiques de simulation********/
out.writeObject(stats);

} catch (IOException IOexc) {
System.err.println("Erreur dans le dialogue des sockets : " + IOexc);
this.finalize();
} catch(ClassNotFoundException CNFexc){
System.err.println("Classe inconnue : " + CNFexc);
}finally {
try {
getSocket().close();
} catch (IOException e2) {
;
}
}
}

}
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
21 août 2004

Maintenant, le code VB partie Client.

//--------Envoie d'un message du client

' Demande d'envoie du méssage saisi
Private Sub cmdEnvoi_Click()
Dim chaine As String
Dim envoi As Object

chaine = "salut"

' Test si la socket est bien connectée
If Wsck_Client.State = sckConnected Then
' Encoie du message saisi plus le caractère de fin de message
'chaine = 0
Wsck_Client.SendData chaine
End If
End Sub

//---------- Réception des messages venant du serveur

' Arrivée de données en provenance du serveur
Private Sub Wsck_Client_DataArrival(ByVal bytesTotal As Long)
Dim Message As String, Coupure As Long
Static Data As String
' Lecture des données reçues
Wsck_Client.GetData Message
Data = Data + Message
txtReception.text = Message

' Ajout des nouvelles données dans le "Buffer"

' Détecte la presence d'un caractère de fin de message
Coupure = InStr(1, Data, Chr(29), vbBinaryCompare)


' Boucle tant que tous les messages complets ne sont pas traités
Do While Coupure > 0
' Lecture du message a traiter (sans caratère de fin de message)
Message = Mid(Data, 1, Coupure - 1)

' Conserve le reste des donées recues
Data = Mid(Data, Coupure + 1, Len(Data) - Coupure)

' Affichage du message reçu
MsgBox "Message du serveur : " + Message, , Me.Caption

' Détecte la presence du prochain caractère de fin de message
Coupure = InStr(1, Data, Chr(29), vbBinaryCompare)
Loop

End Sub
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
:big) Neodante :big)

Bon je regarde ça ce soir ! Là pas trop le temps de m'attardé dessus !! Boulot oblige ...
@+

[Responsable www.neogamedev.com]
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
21 août 2004

Dernière question,

Pourrais tu me faire un petit code permettant d'afficher une image dans une frame ??

Car, j'ai tester plusieur manière de le faire, mais malheureusement, je ne vois pas l'image.

Merci.