60

我让用户在程序中输入单个字符,并将其存储为字符串。我想知道如何检查输入的字符是字母还是数字。我有一个 if 语句,所以如果它是一个字母,它会打印出它是一个字母,对于一个数字也是如此。到目前为止我的代码不起作用,但我觉得我很接近。感谢您提供的任何帮助。

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

12 回答 12

74

你可以使用:

    if (Character.isLetter(character.charAt(0))){
    ....
于 2012-10-03T19:15:46.877 回答
27

您可以使用 Character 类中的现有方法。看看文档:

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

所以,你可以做这样的事情......

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

如果您想确切地知道这是如何实现的,您可以随时查看 Java 源代码。

于 2012-10-03T19:17:28.010 回答
16

嗯,你们忘记了Character.isLetterOrDigit方法:

boolean x;
String character = in.next();
char c = character.charAt(0);
if(Character.isLetterOrDigit(charAt(c)))
{ 
  x = true;
}
于 2014-10-27T23:43:14.293 回答
7

这有点棘手,您在键盘上输入的值是一个字符串值,因此您必须使用方法来定位第一个字符,line.chartAt(0)其中 0 是第一个字符的索引,并将该值存储在 char 变量中,就像char c= line.charAt(0) 现在一样通过使用方法isDigit()isLetter()Character,您可以区分数字和字母。

这是您的程序的代码:

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

}
于 2012-10-03T19:59:51.670 回答
6

通过使用正则表达式

boolean isChar = character.matches("[a-zA-z]{1}");
boolean isDigit = character.matches("\\d{1}"); 
于 2012-10-03T19:21:24.650 回答
4
char charInt=character.charAt(0);   
if(charInt>=48 && charInt<=57){
    System.out.println("not character");
}
else
    System.out.println("Character");

查找 ASCII 表以查看 int 值是如何硬编码的。

于 2012-10-03T19:23:03.417 回答
3

这是如何检查给定字符是否为字母的方法

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.");
}
于 2018-06-19T05:22:33.330 回答
2
     char temp = yourString.charAt(0);
     if(Character.isDigit(temp))
     {
         ..........
     }else if (Character.isLetter(temp))
     {
          ......
      }else
     {
      ....
     }
于 2012-10-03T19:16:15.467 回答
2
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");
             }
        }
    } 
}
于 2017-03-15T11:17:57.933 回答
1

您可以通过正则表达式执行此操作,如下所示您可以使用此代码

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
}
于 2016-01-28T12:50:31.343 回答
0

您需要将字符串转换为字符..

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

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

检查字符以获取其他方法..

于 2012-10-03T19:17:01.300 回答
0

我编写了一个示例程序,用于检查字符串中是否包含数字!我想它也将用于此目的。

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是用户定义的异常。建议我是否可以进行任何更改。

于 2015-11-05T06:03:28.207 回答