Kepp obtient une erreur lors de l'utilisation de Character.isDigit ()
Je l'ai cherché ailleurs et l'ai testé bien là-bas, mais je continue à rencontrer cette erreur ici.
CheckingPasscodes.java:12: error: no suitable method found for isDigit(String) hasDigit = Character.isDigit(passCode); ^ method Character.isDigit(char) is not applicable (argument mismatch; String cannot be converted to char) method Character.isDigit(int) is not applicable (argument mismatch; String cannot be converted to int)
Attendez-vous à vrai ou faux selon l'entrée du scanner. Continuez à recevoir cette erreur:
Scanner scnr = new Scanner(System.in); boolean hasDigit; String passCode; hasDigit = false; passCode = scnr.next(); hasDigit = Character.isDigit(passCode); if (hasDigit) { System.out.println("Has a digit."); } else { System.out.println("Has no digit."); }
3 Réponses :
La méthode Character.isDigit()
prend un char
en entrée - vous essayez de transmettre une String
.
L'erreur décrit le problème:
discordance d'argument; La chaîne ne peut pas être convertie en char
La méthode Scanner.next retournera des jetons entiers (généralement des mots) du flux d'entrée. Ces mots sont des chaînes. La fonction Character.isDigit nécessite un caractère comme entrée, pas une chaîne.
Vous pouvez faire une boucle sur le mot, obtenir chaque lettre sous forme de caractère et les tester:
for (int i = 0; i < passCode.length(); i++){ char c = passCode.charAt(i); if (Character.isDigit(c)) { hasDigit = true; } }
L'erreur est que hasDigit = Character.isDigit(passCode);
Character.isDigit()
attend un caractère comme argument mais vous passez String. Corrigez donc cette conversion de la chaîne en char. tu peux essayer
Scanner scnr = new Scanner(System.in); boolean hasDigit; char passCode; hasDigit = false; passCode = scnr.next().charAt(0); hasDigit = Character.isDigit(passCode); if (hasDigit) { System.out.println("Has a digit."); } else { System.out.println("Has no digit."); }
@Villat - c'est différent - qui fait référence au développeur essayant d'appeler
String.isDigit()
qui n'existe pas. Ce problème est queCharacter.isDigit(String)
n'existe pas. MaisCharacter.isDigit(char)
fait.@Jason tu as raison, j'ai mal lu la question. Drapeau supprimé.
Il ne s'agit pas de «lancer des erreurs». Il imprime une erreur de compilation. Vous appelez une méthode inexistante, et le compilateur vous le dit. Lisez le message.