2011-12-05 63 views
-4
/* File name: IsConsonant.java 
* -------------------------------------- 
* Tests alphabets for consonants 
*/ 

import acm.program.*; 

public class IsConsonant extends ConsoleProgram { 

    public void run() { 
     String ch = readLine ("Enter an alphabet: "); 
     isEnglishConsonant(ch.charAt(0)); 
     if (true){ 
      println("True"); 
     } else { 
      println("False");} 
     } 

    private boolean isEnglishConsonant(char ch){ 
     switch (Character.toUpperCase(ch)){ 
      case 'A': 
      case 'E': 
      case 'I': 
      case 'O': 
      case 'U': 
       return false; 
     default: 
       return true; 
     } 
    }  
} 
+3

問題是什麼?結果應該是什麼?現在的結果是什麼? –

+0

請將問題的標題改爲更合適的,不太一般的。 –

+0

@Erno:其次。而user233444,如果你發現其中的一個答案對你有幫助,請接受它! – codeling

回答

4
if (true) 

總是測試爲真。您需要做

if (isEnglishConsonant(ch.charAt(0))) 

改爲。

+0

非常感謝! – user233444

+1

@ user233444:樂於幫忙。如果有答案解決了您的問題,請記住接受它。 :) –

3

代碼isEnglishConsonant(ch.charAt(0));中的第三行似乎返回了一個布爾值,您不存儲在任何變量中。請檢查一下,如果我沒有錯。

0

if (true) will always return a true

而是做:

boolean consonant = isEnglishConsonant(ch.charAt(0)); 
if (consonant) { 
     println("True"); 
} else { 
     println("False"); 
} 

你忘了你的case語句添加一個break

switch (Character.toUpperCase(ch)){ 
    case 'A': case 'E': case 'I': case 'O': case 'U': 
      return false; 
    break; 

    default: 
     return true; 
} 
+1

他已經返回false爲什麼打破? break不會被訪問:) – mprabhat

1
public void run() { 
    String ch = readLine ("Enter an alphabet: ");   
    if (isEnglishConsonant(ch.charAt(0))){ 
     println("True"); 
    } else { 
     println("False"); 
    } 
} 

private boolean isEnglishConsonant(char ch){ 
     switch (Character.toUpperCase(ch)){ 
      case 'A': case 'E': case 'I': case 'O': case 'U': 
      return false; 
     default: 
      return true; 
     } 
    } 
+0

但isEnglishConsonant(ch.charAt(0))返回true或false。 – user233444

+0

okey當它返回true時,它將執行println(「True」),當它返回false時,它將執行println(「False」) – confucius

1

那麼,如果真要是您的支票是真的,那將永遠是這樣!

if (true){ 

放的isEnglishConsonant(ch.charAt(0))代替true,這就是你想要畢竟要檢查什麼!

0

這裏你不直接比較布爾返回方法。所以,它不工作。將其更改爲類似於

if(isEnglishConsonant(ch.charAt(0))) 
{ 
println("True"); 
} 
else 
{ 
println("False"); 
} 
相關問題