J'essaie de convertir une variable de chaîne en un entier, seule la chaîne ressemble à ceci (par exemple):
String string = " 12";
Et ainsi la chaîne a un espace devant elle. Maintenant, la variable String est en train d'être lue à partir d'un fichier .txt, c'est pourquoi j'ai le problème d'avoir un espace devant elle. J'ai besoin de convertir la variable en int, mais quand j'essaie:
int integer = Integer.parseInt(string);
pour passer la chaîne à un entier, il compile, mais j'obtiens une erreur lorsque j'essaie d'exécuter le programme, car il y a un espace blanc dans la chaîne.
Est-il possible de passer une chaîne de nombres avec un espace devant elle dans un int? Est-ce que .trim fonctionnerait? Et si oui, comment pourrais-je l'utiliser? (Je ne connais pas très bien .trim, j'apprends encore !!) J'apprécie l'aide! ^ _ ^
Est-ce que .trim fonctionnerait? Et si oui, comment pourrais-je l'utiliser?
Oui, trim()
fonctionnera, cela supprimera les espaces de début et de fin de String
,
int integer = Integer.parseInt(string.trim());
Utilisez la fonction de découpage de chaîne en Java pour obtenir une chaîne sans espaces, puis analysez-la ...
1.) Supprimer les espaces avec trim ... String # trim
String stringWithoutSpace = string.trim();
2.) Analyse la chaîne sans espaces ... Integer # parseInt
int integer = Integer.parseInt(stringWithoutSpace);
3.) Faites tout ce qui précède en une étape ...
int integer = Integer.parseInt(string.trim());
La méthode string split () fonctionne bien si vous avez une chaîne de plusieurs nombres séparés par des espaces.
String numbers = "1 23 456";
String[] numbersArray = numbers.split(" "); // splitting string by spaces
System.out.println(numbersArray.toString());
// output ["1","23","456"]
Ensuite, vous pouvez utiliser Integer.parseInt () sur chaque index du tableau. J'espère que cela pourra aider
Pour vous assurer que votre code ne renvoie pas NumberFormatException
ni même NullPointerException
, lorsque vous obtenez le numéro de l'utilisateur, utilisez les classes courantes Apache:
import org.Apache.commons.lang3.StringUtils;
import org.Apache.commons.lang3.math.NumberUtils;
.....
// '1' is the default value which is returned when the string can not be converted to int
// The StringUtils.trimToEmpty do both left and right trim
int number = NumberUtils.toInt(StringUtils.trimToEmpty( " 12 ",1)) = 12;
Si vous utilisez Java 11, vous pouvez utiliser la méthode String::strip
. Par exemple:
int integer = Integer.parseInt(string.strip());
La méthode strip()
est similaire à trim()
mais utilise Character.isWhitespace(int)
pour résoudre les espaces. (La méthode Character.isWhitespace(int)
est compatible avec Unicode.)