【问题标题】:Switch Statement Inside a method of another class [closed]Switch 语句在另一个类的方法中[关闭]
【发布时间】:2014-05-17 03:59:33
【问题描述】:
public int alphCheck(char check){
    switch(check){
        case 'a':
            return 1;
            break;
        case 'b':
            return 2;
            break;
        case 'c':
            return 3;
            break;
        case 'd':
            return 4;
            break;
        case 'e':
            return 5;
            break;
        case 'f':
            return 6;
            break;
        case 'g':
            return 7;
            break;
        case 'h':
            return 8;
            break;
        case 'i':
            return 9;
            break;
        case 'j':
            return 10;
            break;
        case 'k':
            return 11;
            break;
        case 'l':
            return 12;
            break;
        case 'm':
            return 13;
            break;
        case 'n':
            return 14;
            break;
        case 'o':
            return 15;
            break;
        case 'p':
            return 16;
            break;
        case 'q':
            return 17;
            break;
        case 'r':
            return 18;
            break;
        case 's':
            return 19;
            break;
        case 't':
            return 20;
            break;
        case 'u':
            return 21;
            break;
        case 'v':
            return 22;
            break;
        case 'w':
            return 23;
            break;
        case 'x':
            return 24;
            break;
        case 'y':
            return 25;
            break;
        case 'z':
            return 26;
            break;

    }
}

PS.这是在另一个班级完成的 我希望能够在主类中使用此方法,输入一个字母,并返回该字母的数字/索引。 但我不断得到:此方法必须返回 int 类型的结果。

非常困惑。请帮忙。谢谢。

【问题讨论】:

  • check 不匹配任何cases 时会发生什么?那么return的方法应该是什么呢?
  • 那很长。更简单的是check - 'a' + 1。这是因为ASCII.
  • 像这样编辑你的问题对我来说似乎不合适:现在,那些乐于回答你问题的人看起来很愚蠢,因为他们没有注意到你已经有了default: 标签,而事实上你他们回答时没有那个。
  • 就目前而言,我建议创建方法static,这样如果它在类Classname 中,它就可以称为Classname.alphCheck(someChar)

标签: java class methods switch-statement


【解决方案1】:

这里有一个问题需要考虑:如果输入的字母不是您描述的情况之一会怎样?

虽然可能知道你只是在输入字母,但编译器并不知道这一点,因为如果你定义的一种情况是,它无法弄清楚返回什么't hit,因此会发出错误。您需要输入 default 案例,以便编译器知道该方法保证返回某些内容:

switch(check) {
    case 'a':
    ...
    default: 
        // return something or maybe print/throw an error
}

对此更好的解决方案可能是使用 chars 只是不同形式的数字这一事实。例如,'a' 等价于整数 97(查看表 here 以获取字符表及其 ASCII 数字等价物)。所以你可以做一个数学技巧来获得等效的结果:

public int alphCheck(char check) {
    return check - 'a' + 1;
}

【讨论】:

  • @ddgg007:响应您的编辑,想想return 语句的作用。 return 语句告诉程序返回具有该值的调用方法,对吗?那么return之后的代码怎么执行呢?
【解决方案2】:

您必须提供返回类型,例如 return 0;在你的 switch 语句的末尾。或者默认情况下:case

switch(check) {
    ..
    default: 
        return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多