此代码无法正常执行。有人可以帮帮我吗?

时间:2011-12-05 11:39:16

标签: java

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

6 个答案:

答案 0 :(得分:4)

if (true)

总是测试为真。你需要做

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

代替。

答案 1 :(得分:3)

代码isEnglishConsonant(ch.charAt(0));中的第3行似乎返回一个布尔值,您不存储在任何变量中。如果我没有错,请检查一下。

答案 2 :(得分: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;
        }
    }

答案 3 :(得分:1)

如果你的检查是否属实,那将永远如此!

if (true){

isEnglishConsonant(ch.charAt(0))代替true,这就是你要检查的内容!

答案 4 :(得分:0)

if (true)始终返回true

相反:

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

您忘了在break声明中添加case

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

    default: 
        return true;
}

答案 5 :(得分:0)

这里你不是直接比较布尔返回方法。所以,它不起作用。将其更改为

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