web-dev-qa-db-fra.com

Comment vérifier si un caractère dans une chaîne est un chiffre ou une lettre

J'ai l'utilisateur entrer un seul caractère dans le programme et il est stocké sous forme de chaîne. Je voudrais savoir comment je pourrais vérifier si le caractère saisi est une lettre ou un chiffre. J'ai une déclaration if, donc si c'est une lettre, son empreinte est une lettre, et la même chose pour un chiffre. Le code que j'ai jusqu'à présent ne fonctionne pas, mais j'ai l'impression d'être proche. Toute aide que vous pouvez offrir est appréciée. 

  System.out.println("Please enter a single character: ");
  String character = in.next();

  System.out.println(character);

  if (character.isLetter()){
    System.out.println("The character entered is a letter.");
  }
  else (character.isDigit()){
    Syste.out.println("The character entered is a digit.");
50
user1701604

Vous pouvez utiliser:

    if (Character.isLetter(character.charAt(0))){
    ....
68
Reimeus

Vous pouvez utiliser les méthodes existantes de la classe Character. Jetez un coup d'œil à la documentation:

http://download.Java.net/jdk7/archive/b123/docs/api/Java/lang/Character.html#isDigit(char)

Donc, vous pourriez faire quelque chose comme ça ...

String character = in.next();
char c = character.charAt(0);
...
if (Character.isDigit(c)) { 
    ... 
} else if (Character.isLetter(c)) {
    ...
}
...

Si vous souhaitez savoir exactement comment cela est implémenté, vous pouvez toujours consulter le code source Java.

24
Hristo

Hum, vous oubliez la méthode Character.isLetterOrDigit:

boolean x;
String character = in.next();
char c = character.charAt(0);
if(Character.isLetterOrDigit(charAt(c)))
{ 
  x = true;
}
15
Fluffle

Ceci est un peu délicat, la valeur que vous entrez au clavier est une valeur de chaîne, vous devez donc pointer le premier caractère avec la méthode line.chartAt(0) où, 0 est l'index du premier caractère et stocker cette valeur dans une variable char comme dans char c= line.charAt(0)now avec l'utilisation de la méthode isDigit() et isLetter() de la classe Character, vous pouvez faire la différence entre un chiffre et une lettre.

voici un code pour votre programme:

import Java.util.Scanner;

class Practice
{
 public static void main(String[] args)
  {
   Scanner in = new Scanner(System.in);
   System.out.println("Input a letter"); 
   String line = in.nextLine();
   char c = line.charAt(0);
   if( Character.isDigit(c))
   System.out.println(c +" Is a digit");
   else if (Character.isLetter(c))
   System.out.println(c +" Is a Letter");
  }

}
6
Brainiac Khan

En utilisant expressions régulières :

boolean isChar = character.matches("[a-zA-z]{1}");
boolean isDigit = character.matches("\\d{1}"); 
5
Michael
char charInt=character.charAt(0);   
if(charInt>=48 && charInt<=57){
    System.out.println("not character");
}
else
    System.out.println("Character");

Recherchez la table ASCII pour voir comment la valeur int est codée en dur.

3
Jimmy
     char temp = yourString.charAt(0);
     if(Character.isDigit(temp))
     {
         ..........
     }else if (Character.isLetter(temp))
     {
          ......
      }else
     {
      ....
     }
2
kosa
import Java.util.*;

public class String_char 
{

    public static void main(String arg[]){   

        Scanner in = new Scanner(System.in);
        System.out.println("Enter the value");
        String data;
        data = in.next();

        int len = data.length();
        for (int i = 0 ; i < len ; i++){
            char ch = data.charAt(i);

            if ((ch >= '0' && ch <= '9')){
                System.out.println("Number ");
            }
            else if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')){
            System.out.println("Character");
            }
            else{
                System.out.println("Symbol");
             }
        }
    } 
}
2
Jain Austin

C'est le moyen de vérifier si un caractère est alphabet ou non

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    char c = sc.next().charAt(0); 
    if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
         System.out.println(c + " is an alphabet.");
    else
        System.out.println(c + " is not an alphabet.");
}
1
malith vitha

Vous pouvez le faire par expression régulière comme suitvous pouvez utiliser ce code

EditText et = (EditText) findViewById(R.id.editText);
String NumberPattern = "[0-9]+";
String Number = et.getText().toString();

if (Number.matches(NumberPattern) && s.length() > 0)
{ 
    //code for number
}
else
{
    //code for incorrect number pattern
}
1
Jeffy

Vous devez convertir votre chaîne en caractère .. 

String character = in.next();
char myChar = character.charAt(0);

if (Character.isDigit(myChar)) {
   // print true
}

Vérifiez Caractère pour d'autres méthodes ..

0
Rohit Jain

J'ai codé un exemple de programme qui vérifie si une chaîne de caractères contient un nombre! Je suppose que cela servira aussi à cette fin.

public class test {
    public static void main(String[] args) {
        String c;
        boolean b;

        System.out.println("Enter the value");
        Scanner s = new Scanner(System.in);
        c = s.next();
        b = containsNumber(c);
        try {
            if (b == true) {
                throw new CharacterFormatException();
            } else {
                System.out.println("Valid String \t" + c);
            }
        } catch (CharacterFormatException ex) {
            System.out.println("Exception Raised-Contains Number");

        }
    }

    static boolean containsNumber(String c) {
        char[] ch = new char[10];
        ch = c.toCharArray();

        for (int i = 0; i < ch.length; i++) {
            if ((ch[i] >= 48) && (ch[i] <= 57)) {
                return true;
            }
        }
        return false;
    }
}

CharacterFormatException est une exception définie par l'utilisateur. Suggérez-moi si des modifications peuvent être apportées.

0
Max