我是java的初学者,我的问题可能看起来有点可怕,但帮助会受到赞赏!
无论如何我的问题很好,书中的问题是:
“编写一个程序,提示用户提供alpha下注中的单个字符。打印元音或辅音,具体取决于用户输入。如果用户输入不是字母(a和z之间或A和Z之间) ,或是一个长度> 1的字符串,打印错误信息。
如何检测输入是否不是字母,请帮助我们! 谢谢!
答案 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字母,区域设置等也是留给读者的练习。