我是一名java初学者,我的问题看起来有点可怕,尽管帮助会很赞!字符串,如何识别字母
不管怎么说,我的问题以及书中的问题是:
“写的是提示用户从阿尔法赌注提供单个字符的程序打印元音或辅音,根据用户输入如果。用户输入不是字母(a与z或A与Z之间),或者是长度大于1的字符串,则输出错误信息。将不胜感激! 谢谢!
我是一名java初学者,我的问题看起来有点可怕,尽管帮助会很赞!字符串,如何识别字母
不管怎么说,我的问题以及书中的问题是:
“写的是提示用户从阿尔法赌注提供单个字符的程序打印元音或辅音,根据用户输入如果。用户输入不是字母(a与z或A与Z之间),或者是长度大于1的字符串,则输出错误信息。将不胜感激! 谢谢!
简单的会是这样的
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;
}
}
“简单”,如“不编译”? – Mat
@Mat - 显然,它不是*意图*编译。 –
在大多数常见语言中输入的是ACII。看看这个表是什么样的,看看这张表
当你收到用户发来的一封信时,你会得到一个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')
,因为有他们
技术上,Java使用Unicode,而不是ASCII。除了你的代码处理之外,还有很多很多的字母。不过,我相信这个解决方案会满足。 –
也许之间有几个迹象你可以厕所ķ成正则表达式(不是我喜欢的方式,如果我是诚实的),但它的短,它的工作(也可能给你一个不同的准):
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 ...
我要跳过的在那里你读一个单一的字符,但你要找的大概是什么样子这一部分:
if (!chr.isLetter()) {
// error
} else if ("aeiou".contains(chr.toLowerCase()) {
// vowel
} else {
// consonant
}
处理非ASCII字母,语言环境等也作为练习留给读者。
注意:关于我的头顶,我不知道一个角色是否算作CharSequence,但如果没有,那么这也是一个练习。 –
使用字母范围来比较'(input> ='a'&& input <='z')|| (input> ='A'&& input <='Z')'用于英文标准字母集 –
请尝试一下并带着具体问题来这里... –
[Character.isLetter](http://docs.oracle.com /javase/7/docs/api/java/lang/Character.html#isLetter(char)) – DaoWen