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] Éviter de parseInt un mot ?

]trichelieu[
]trichelieu[
Niveau 10
24 mars 2012 à 11:46:04

Salut,

Je suis en train de faire des petits programmes en java pour m'entraîner, mais j'ai un problème.

Voilà, mon programme consiste à recevoir une série de nombre et à les traités puis de sortir un retour.

En gros je tape :

java monProgramme 18 79.57 52 31 45 75 65

Ca fait plein de traitement et ca me retourne d'autres valeurs.

Mais voilà, pour traiter ces nombres, je fais un :

numbers[i] = Double.parseDouble(args[i]);

et là... Si je mets :

java monProgramme 18 79.57 salut 31 45 75 65

Mon programme bug, m'indiquant qu'il n'arrive pas à parseInté le "salut" (logique). Comment faire donc pour checker si la valeur que l'on entre est bien un nombre ? Je suppose qu'il faut agir avec un if/else ou un try/catch, mais... disons que je vois pas quelle fonction utilisé... C'est pourquoi je vous demande de l'aide s'il vous plaît :)

VisionElf
VisionElf
Niveau 10
24 mars 2012 à 12:03:14

En C# on fait des try/catch en faisant un truc du genre

try
{
numbers[i] = Double.parseDouble(args[i]);
}
catch
{
//Soit un message, soit ne rien faire
}

Y'a pas de fonctions particulières.

tbop2
tbop2
Niveau 10
24 mars 2012 à 12:04:09

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Double.html#parseDouble(java.lang.String)

[stefo]
[stefo]
Niveau 13
24 mars 2012 à 12:04:28

if(numbers[i].getClass.getName != "java.lang.String) {
// traitement
} else {
// traitement de l'erreur personnalisé
}

[stefo]
[stefo]
Niveau 13
24 mars 2012 à 12:06:20

ou alors tu peux faire un try catch avec l'exception NumberFormatException.

]trichelieu[
]trichelieu[
Niveau 10
24 mars 2012 à 12:07:38

VisionElf :d) hum, merci :) mais au final, ca me permet pas de faire quoique ce soit. Je veux dire, je saurais si c'est un nombre ou un mot, mais comment traiter par la suite ? le try ne va pas retourner de valeur ou quoi que ce soit non ?

tbop :d) J'ai déjà regardé la doc de parseDouble, et en effet je me prends le NumberFormatException en pleine poire. Cependant, ca me dit pas comment faire non ? :( (Oh, j'ai pas précisé, je suis un gros novice en java hein :p) )

[stefo]
[stefo]
Niveau 13
24 mars 2012 à 12:12:20

Si tu veux utiliser le numberFormatException :

try {
numbers[i] = Double.parseDouble(args[i]);
}
catch(NumberFormatException n) {
System.out.println(numbers[i] + "n'est pas un nombre");
}

C'est vrai que c'est mieux que ma premiere méthode

]trichelieu[
]trichelieu[
Niveau 10
24 mars 2012 à 12:16:59

Certes, ca chope l'erreur, mais comme j'essayais de le dire avant, il continue de traiter, et je me prends le NumberFormatException quand même :(

En gros j'ai par exemple :
try {
int minimum = Integer.parseInt(args[0]);
}
catch(NumberFormatException n) {
System.out.println(args[0] + "n'est pas un nombre");
}
int minimum = Integer.parseInt(args[0]);

si args[0] vaut helloworld, je me prends un "helloworld'est pas un nombre
Exception in thread "main" java.lang.NumberFormatException: For input string: "helloworld" et le programme coupe :-(

]trichelieu[
]trichelieu[
Niveau 10
24 mars 2012 à 12:26:55

Je viens de faire des tests et j'ai compris ! :rouge:

En faite, ce qui se passe dans le try se passe coûte que coûte, donc pas besoin de refaire int minimum = Integer.parseInt(args[0]);
après ! Et s'il y a une erreur, ca va dans le catch et basta !

Merci beaucoup, je devrais pouvoir y arriver maintenant ! :)

tbop2
tbop2
Niveau 10
24 mars 2012 à 12:48:38

Ah ok donc en fait le vrai problème c'est que tu ne savais pas comment utiliser les instructions try catch en fait. Au temps pour moi ! :)

]trichelieu[
]trichelieu[
Niveau 10
24 mars 2012 à 13:24:32

C'est rien, merci encore pour votre aide ! :-d

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