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] int => String ?

HareeBoo
HareeBoo
Niveau 6
22 novembre 2013 à 22:53:23

Bonsoir guys et guysettes :hap:

Mon programme permet à l'user d'entrer plusieurs saisies à un moment ( maximum 20 ) néanmoins j'ai un souci. Si jamais l'user va au dessous de ces 20 ( genre il en fait 3 quoi ) je voudrais qu'il puisse stopper cette phase du programme en entrant "End" au lieu d'un entier.

MAIS on m'annonce, comme je m'y attendais, que String n'est pas compatible avec un int...bah oui c'est sur mais alors je ne vois pas comment procéder.

Une idée ?

Code_shrek
Code_shrek
Niveau 4
22 novembre 2013 à 22:55:26

Demande un string, vérifie s'il est égal à "End" et sinon, convertis-le en int (il doit y avoir une fonction pour ça, même si je ne connais pas le java)

VivaFidel
VivaFidel
Niveau 10
22 novembre 2013 à 23:01:44

En gros tu veux convertir String vers int ? si oui alors fait Integer.parseInt(String); si c'est l'inverse que tu veux alors Integer.toString(int)

[-Shana-]
[-Shana-]
Niveau 10
22 novembre 2013 à 23:15:21

Il y a aussi String.valueOf(Tout et n'importe quoi);
Et String.valueOf(Object obj) appelle juste obj.toString(); :oui: .

HareeBoo
HareeBoo
Niveau 6
22 novembre 2013 à 23:58:56

Je pourrai voir un cas-test ? Parce que le message persiste.

Je dois pas l'utiliser comme il se doit :(

XzZy
XzZy
Niveau 10
23 novembre 2013 à 00:08:39

Si tu utilise la classe Scanner, tu peux utiliser la méthode nextLine(). Par contre, tu vas devoir valider les données si l'utilisateur entre n'importe quoi.

Ou bien tu utilise un regex pour vérifier que ce qui est entré est bien un entier et si c'est autre chose, bah le programme sort de la boucle, je t'ai fais un petit exemple ici :

http://pastebin.com/SDv7CbPE

XzZy
XzZy
Niveau 10
23 novembre 2013 à 00:16:00

Par contre il y a une erreur dans mon regex, si tu mets plusieurs "-" ça va planter, donc tu peux remplacer "-*[0-9]*" par "-?[0-9]*".J'espère qu'il y a pas d'autre erreur. :o)

HareeBoo
HareeBoo
Niveau 6
23 novembre 2013 à 00:22:26

http://pastebin.com/xdvWYbCq

Voilà ce que j'ai actuellement. J'ai vu sur d'autres sujets qu'il était possible de ne pas limiter la saisie de l'utilisateurs ( exit les tableaux donc, bonjour les listes ). Mais mon souci persiste.

Est ce que cela change quelque chose à ton exemple ?

XzZy
XzZy
Niveau 10
23 novembre 2013 à 00:47:34

J'ai adapté ton code à mon exemple : http://pastebin.com/c1d16Yjf

Dis moi ce que tu en penses.

HareeBoo
HareeBoo
Niveau 6
23 novembre 2013 à 01:07:59

Je te remercie de t'être donné cette peine !

Néanmoins ça me pose quand même un souci : Je voudrais que ce soit un mot, genre "end" qui achève la phase scanner au lieu de n'importe quelle entrée autre qu'un nombre.

Et c'est ce qui m'embête tellement depuis des heures !

Enfin je ne peux pas te demander de faire le code à ma place, mais ce truc me coince vraiment. String n'est pas compatible avec int, et quoi que je fasse le même message d'erreur apparaît ! :noel:

Je vais revoir tout ça. Enfin, réessayer encore.

C'est ça la progra...

ThedahuDragon
ThedahuDragon
Niveau 6
23 novembre 2013 à 09:01:09

Je dirai surtout que la programmation, c'est aussi ne pas faire au pif et on verra bien!
Il existe un magnifique outils nommé Javadoc, qui te donne toute les définitions et leur utilité !

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
Pour ton soucis, suffit de récupérer un String de l'utilisateur, puis d'utiliser un monString.equals("end") pour savoir si l'utilisateur veut stopper.
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals%28java.lang.Object%29

Sinon,
L'on essaye de convertir se qu'il à marqué en entier :
http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html
Et ça, tout simplement en faisant : int mavaleur = Integer.parseInt(monString);
http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt%28java.lang.String%29

Et en plus, comme c'est bien fait, la Javadoc t'indique justement l'erreur (throw) renvoyée s'il n'a pas réussi à convertir en entier.
Il suffit d'utiliser donc un try/catch autour de cette méthode.

Utilisez la doc! C'est vraiment top!!

HareeBoo
HareeBoo
Niveau 6
23 novembre 2013 à 17:07:32

C'est vrai que c'est vaste. Je vais voir, doit bien y avoir une méthode ou une fonction qui permet de vérifier une égalité entre un Int et un String quand même ! ( Dans cet ordre, Equals fait l'inverse ).

HareeBoo
HareeBoo
Niveau 6
23 novembre 2013 à 17:15:23

En fait tout ce que je trouve toujours permet de faire :

String :d) Int

Convertir une chaînes en entiers par exemple.

Sauf que je cherche toujours le contraire !

Le programme doit en gros comprendre que Int = "End" ( donc quand la variable int est égal à mon String ). C'est impossible ou bien ? :noel:

Parce que bon autant me le dire de suite :noel:

saifai
saifai
Niveau 10
23 novembre 2013 à 17:35:53

Ben non, un int ne peut pas contenir des lettres d'alphabets, ton programme va planter.

HareeBoo
HareeBoo
Niveau 6
23 novembre 2013 à 17:44:06

Okay donc mon exo est infaisable. Je pensais faire deux variables. une A et une B par exemple. la A équivaut aux valeurs entrés par l'utilisateur ( Arraylist ). La B devait être égal à un String "End". Et quand A == B ( donc quand l'utilisateur entre "End" au lieu d'un nombre ) la saisie était terminée et on passait à la suite du programme.

J'ai tout essayé ce truc n'est pas possible. Donc tant pis.

saifai
saifai
Niveau 10
23 novembre 2013 à 17:50:12

ben t'as un while non pour la boucle? Tu met un if dedans avec un break, ça devrais marcher non? :doute:

HareeBoo
HareeBoo
Niveau 6
23 novembre 2013 à 18:05:02

Non.

"String n'est pas compatible avec Int"

ou

"Int n'est pas compatible avec String"

Quoi que je fasse. J'avais établit, à l'origine, avant de faire ce topic, mes deux variables donc. A dépendait de l'utilisateur. Et en ce qui concerne B :

int b = Integer.parseInt("End");

Et un if comme quoi si a == b alors etc...

Mais nan. Marche pas. J'ai regardé ce qu'on m'a proposé ici, ça ne fonctionnait pas non plus. Enfin, j'ai recherché sur la javadoc, et rien ne correspond à mes attentes ( mais là c'est encore plus ma faute vu que même si j'ai absolument aucun souci avec l'anglais il se peut que je rate des trucs, et c'est tellement vaste ! ).

Bref je ne vais pas pleurer 100 ans ! J'ai modifié le programme. Désormais à chaque saisie le programme demande à l'utilisateur s'il veut en entrer une autre ( vive Char, lui au moins il fait pas chier ). Si la réponse est "O" alors il peut en entrer une autre. Si la réponse est "N" on passe à la suite.

C'est pas assez chiant de devoir taper "O" à chaque fois mais au moins le programme fonctionne.

:noel:

HareeBoo
HareeBoo
Niveau 6
23 novembre 2013 à 18:07:29

Ah en passant merci à tous ici ! Même si vos réponses ne vont pas forcément me servir pour ce programme là ( pas forcément parce que je compte bien réessayer encore jusqu'à Lundi quand même, c'est certainement moi qui patauge dans mon amateurisme ) j'ai quand même apprit pas mal de choses utiles qui peuvent servir plus tard.

^^

[-Shana-]
[-Shana-]
Niveau 10
23 novembre 2013 à 18:25:27

int b = Integer.parseInt("End");

:d) Normal que ça fonctionne pas, il n'y a pas de nombres dans "End".
Il faut que tu fasses une vérification juste avant de faire tes traitements :d)

// A => Ce que tu récupères de l'utilisateur.
if(a.equals("End")) doSomething();

Rien n'est impossible en informatique :ok: .

HareeBoo
HareeBoo
Niveau 6
23 novembre 2013 à 18:46:46

"Cannot invoke equals (String) to the primitive int"

:noel:

Ce truc est maudit je vous dis.

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