0
votes

Erreur Character.isDigit (): aucune méthode appropriée trouvée pour isDigit (String)

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 commentaires

@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 que Character.isDigit(String) n'existe pas. Mais Character.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.


3 Réponses :


6
votes

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


0 commentaires

0
votes

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;
    }
}


0 commentaires

0
votes

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.");
  }


0 commentaires