J'essaie d'extraire un numéro de la chaîne, puis vérifiez s'il s'agit d'un Int ou double. S'il s'agit d'un entier, je convertissez le numéro en utilisant TOIN code>. S'il ne convertit pas alors à la double utilisation en utilisant todouble code>. val str = 50 units
val num = str.split("\\D+").filter(_.nonEmpty)
val y = num(0).toDouble
val x = num(0).toInt
if (x==y) {
x
//print("int")
} else {
y
//print("double")
}
3 Réponses :
simple et délicat ou vous pouvez utiliser regex ou scala.util.try. p> p>
1er problème strong> - vous divisez sur des caractères non chiffres, il sera donc divisé sur le point 2ème problème strong> - Le Alors, ce que vous essayez de faire est peu sain. Vous voulez que ce soit un type ou l'autre. Le système de type tente d'appliquer un compromis (. code> et vous n'obtiendrez jamais le bon double code> valeur. x code> et y code> Les variables seront toujours em> être égales Ils viennent tous les deux de la même chaîne de chiffres. 50 == 50.0 code> est toujours vrai code>. p> si code> la condition est toujours true code> et renvoie donc toujours la valeur int code> dans x code>, résultat du si code> est code> est < Code> Double Code> Parce qu'un instruction code> si code> doit renvoyer un seul type. Celui-ci tente de renvoyer un int code> double code>, donc la valeur int code> est élargie à un Double code> de sorte que les types correspondent. P> double code>). Si ce n'est pas acceptable, vous pouvez envisager d'envelopper vos types dans un code>. P>
J'ai compris. Merci pour l'explication détaillée.
Votre scission n'est pas correcte. Si la chaîne est Vous pouvez le faire comme ceci (analyse et trouvant Si c'est vous pouvez jouer avec elle ici p> p> 50,2 unités code>, num code> contiendra 502 code>. Vous devez utiliser une regex appropriée (je ne vérifie que le premier numéro de la chaîne et il est divisé par "" code>, au cas où il existe). int code> ou double code>) p>
Pourriez-vous donner des exemples d'entrée / sortie attendus? Il est très difficile de comprendre quelle est votre sortie attendue pour quel type d'entrée.