60

I have the user entering a single character into the program and it is stored as a string. I would like to know how I could check to see if the character that was entered is a letter or a digit. I have an if statement, so if its a letter its prints that it's a letter, and the same for a digit. The code I have so far doesn't work but I feel like I'm close. Any help you can offer is appreciated.

  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

これは少し注意が必要です。キーボードで入力する値は文字列値であるため、メソッドを使用して最初の文字をピッチする必要があります。ここで、0は最初の文字のインデックスであり、この値を 現在line.chartAt(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 に答える
2
     char temp = yourString.charAt(0);
     if(Character.isDigit(temp))
     {
         ..........
     }else if (Character.isLetter(temp))
     {
          ......
      }else
     {
      ....
     }
于 2012-10-03T19:16:15.467 に答える
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 に答える