我是一名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