我有一个我正在编写的程序,它假设将单词翻译成猪拉丁语(非常基本的练习) 我可以将辅音改为猪拉丁语而没有问题,但另一方面是我需要检查第一个字母是否是辅音,如果不是那么翻译就会改变。
我已经构建了一个方法来检查一个单词的第一个字母是否是一个辅音,如果它返回一个布尔值为true,否则为false。
由于某种原因,该方法不会运行" else"声明
以下是编写的方法。
private static boolean firstLetterConsonant(String s)
{
boolean isConsonant;
//check to see if the first letter is not a vowel
if(s != "a" && s != "e" && s != "i" && s != "o" && s != "u")
{
isConsonant = true;
} else {
isConsonant = false;
}
return isConsonant;
}
作为附带注释,该方法将传递用户在程序中其他位置输入的字符串。
答案 0 :(得分:4)
您有3个选项。
使用String#startsWith()
和if条件检查5个元音(就像你正在做的那样)
使用String#charAt()
从String中取出第一个char并检查它是否是元音(如果是这样则返回false)。
使用String#matches
并使用"(?i)[^aeiou].*"
答案 1 :(得分:1)
只需你可以这样做:
将字符串值传递给此方法时,应检查它是否为null或不为null。因为如果字符串值为null,则会引发空指针异常。
private static boolean firstLetterConsonant(String s)
{
char l = s.toLowerCase().trim().charAt(0);
//check to see if the first letter is not a vowel
if (l!='a' && l!='e' && l!='i' && l!='o' && l!='u')) {
return true;
}
return false;
}
答案 2 :(得分:0)
这确实是一个非常简单的解决方案。
private static boolean firstLetterConsonant(String s) {
boolean isConsonant = true;
if ("".equals(s))
return false;
//check to see if the first letter is not a vowel
switch(s.charAt(0)) {
case 'A':
case 'a':
case 'E':
case 'e':
case 'I':
case 'i':
case 'O':
case 'o':
case 'U':
case 'u': isConstant = false;
}
return isConsonant;
}
您正在检查字符串本身,但您应该只检查第一个字符。
或者您可以使用String.matches
函数并传入"(?i)[^aeiou].*"
。正则表达式更好。