2011-12-05 15 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:second that。提供された回答の1つがあなたに役立っていることが判明した場合は、user233444を受け入れてください! – codeling

答えて

4
if (true) 

は常にtrueとテストされます。あなたは代わりに行う必要があります

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

+0

ありがとう! – user233444

+1

@ user233444:お寄せいただきありがとうございます。あなたの問題を解決する答えがあった場合は、それを受け入れることを忘れないでください。 :) –

3

コードisEnglishConsonant(ch.charAt(0));の3行目は、変数に格納されていないブール値を返すようです。私が間違っていないかどうか確認してください。

0

if (true)常に返信atrueです。

むしろやる:あなたのcase文でbreakを追加するのを忘れ

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

。まあ

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

    default: 
     return true; 
} 
+1

彼はすでに偽を返しているので、なぜ壊れていますか? 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

真がtrueの場合、あなたのチェックは、それは常にケースになる場合!

if (true){ 

それはあなたがすべての後にチェックしたいものだ、isEnglishConsonant(ch.charAt(0))代わりのtrueを入れて!

0

ここでは、真偽値を返すメソッドを直接比較していません。そう、それは働かない。好きなように変更してください

if(isEnglishConsonant(ch.charAt(0))) 
{ 
println("True"); 
} 
else 
{ 
println("False"); 
} 
関連する問題