字符串,如何识别字母

时间:2013-08-25 05:23:58

标签: java if-statement

我是java的初学者,我的问题可能看起来有点可怕,但帮助会受到赞赏!

无论如何我的问题很好,书中的问题是:

“编写一个程序,提示用户提供alpha下注中的单个字符。打印元音或辅音,具体取决于用户输入。如果用户输入不是字母(a和z之间或A和Z之间) ,或是一个长度> 1的字符串,打印错误信息。

如何检测输入是否不是字母,请帮助我们! 谢谢!

4 个答案:

答案 0 :(得分:2)

大多数常见语言的输入都在ACII中。看看ascii是什么,看看这张表 http://www.cdrummond.qc.ca/cegep/informat/professeurs/alain/images/ASCII1.GIF

当您收到用户的来信时,您会收到char。这个字符包含一个数字,就ASCII表而言是一个字母,这意味着如果你的字符中有75,那么你就有一个'K'

现在,要知道你是否收到了一封信,你需要做的就是:

char c;// Your char

Scanner scan = new Scanner (System.in);
c = scan.nextChar();

if((c>= 'a' && c<= 'z') || (c>= 'A' && c<= 'Z'))
{
  // you got a letter
}
else
{
  //That's not a letter
}

你可以这样做,因为这封信是一个接一个的,但你不能这样做

if(c>= 'A' && c<= 'z')

因为他们之间有几个迹象

答案 1 :(得分:1)

也许你可以查看正则表达式(如果我是诚实的话,这不是我最喜欢的方法),但它很简短,它可以完成工作(也可能会给你一个不同的前景):

String letterPattern = "^(?i)[a-z]$";
String vowelPattern = "^(?i)[aeoui]$";
String test = "A";

if(test.matches(letterPattern)) {
    if(test.matches(vowelPattern)) {
        System.out.println("This is a vowel!");
    }
    else {
        System.out.println("It's not ...");
    }           
}
// you get the idea ...

答案 2 :(得分:0)

简单的就像这样

public static final int VOWEL = 0;
public static final int CONSONANT = 1;
public static final int OTHER = 2;

public int getCharType(char c) {
  switch(c) {
    case 'a':
    case 'A':
    case 'e':
      ...
      return VOWEL;

    case 'b':
    case 'B':
    case 'c':
      ...
      return CONSONANT;

    default:
      return OTHER;
  }
}

答案 3 :(得分:0)

我将跳过您阅读单个角色的部分,但您正在寻找的内容可能如下所示:

if (!chr.isLetter()) {
    // error
} else if ("aeiou".contains(chr.toLowerCase()) {
    // vowel
} else {
    // consonant
}

处理非ascii字母,区域设置等也是留给读者的练习。