2016-11-05 54 views
0

我有一个我正在写的程序,它是将单词翻译成猪拉丁语(真正基本的练习) 我可以让辅音变成猪拉丁语没有问题,但另一方面是我需要检查第一个字母是否是辅音,如果不是,那么翻译会发生变化。如果第一个字母是一个辅音,则返回一个布尔值

我已经建立了一个方法来检查一个单词的第一个字母是否是一个辅音,如果它是返回一个布尔值为true否则为false。

出于某种原因,这种方法不会运行“否则”语句

下面是被写入的方法。

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; 
} 

作为侧面注释,该方法正在传递用户在程序中其他位置输入的字符串。

+2

你没有检查第一个字母,你正在检查整个字符串。 'char c = s.charAt(0)' – Tibrogargan

+0

@Techiee不会得出结论。我没有降低你的...直到现在 – Tibrogargan

+0

@Tibrogargan:对不起。 @宪兵:我写了答案,他比较字符串,而不是字符,我知道是不正确的。 – Techiee

回答

4

您有3个选项。

  1. 使用String#startsWith()和if条件检查5个元音(就像你在做什么)

  2. 采取的第一个字符出使用String#charAt()字符串,并检查它是否是一个元音(和返回假如是这样的话)。

  3. 使用String#matches和使用"(?i)[^aeiou].*"

+0

最后一个错过首都,不是?的字符数组。另外,'-1 ==“aeiou”.indexOf(s.substring(0,1).toLowerCase())'XD – Tibrogargan

+0

@Tibrogargan - 编号'?i'选项使匹配不区分大小写。它检查资本和小型字符。 – TheLostMind

+1

你只是偷偷在那里:) – Tibrogargan

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].*"。正则表达式更好。

+1

当第一个字母是**而不是辅音时,你返回'true'。 – QBrute

+0

哈哈溜出去。修复。 – Jay

1

只要你能做到这样:

当您将字符串值这个方法,你应该检查它是否为空或不为空。因为如果字符串值为空,它将引发空指针异常。

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; 
} 
+0

如果用'false'初始化'isConsonant',则可以删除'else'块。 – QBrute

+0

是的。谢谢。 –

+0

@QBrute你甚至不需要'isConsonant'。 '如果(1!='a'[...])返回true;返回false;'。 – Gendarme

相关问题