当前位置: 首页 > 面试题库 >

在Java中使用switch的问题

慕容成和
2023-03-14
问题内容

我不知道为什么它总是返回arg1的值。我正在建立一个体重转换器。

public double convert(double arg1,int arg2,int arg3) {
    // arg1 = amount, arg2 = from, arg3 = to
    double milligram = 1;
    double gram = 1000;
    double ounce = 28349.5;
    double pound = 453592;
    double answer = 0;
    switch(arg2) {
    case 0: switch(arg3) { // if milligram
            case 0: answer = (arg1 * milligram) / milligram;
            case 1: answer = (arg1 * milligram) / gram;
            case 2: answer = (arg1 * milligram) / ounce;
            case 3: answer = (arg1 * milligram) / pound;
    }
    case 1: switch(arg3) { // if gram
            case 0: answer = (arg1 * gram) / milligram;
            case 1: answer = (arg1 * gram) / gram;
            case 2: answer = (arg1 * gram) / ounce;
            case 3: answer = (arg1 * gram) / pound;
    }
    case 2: switch(arg3) { // if ounce
            case 0: answer = (arg1 * ounce) / milligram;
            case 1: answer = (arg1 * ounce) / gram;
            case 2: answer = (arg1 * ounce) / ounce;
            case 3: answer = (arg1 * ounce) / pound;
    }
    case 3: switch(arg3) { // if pound
            case 0: answer = (arg1 * pound) / milligram;
            case 1: answer = (arg1 * pound) / gram;
            case 2: answer = (arg1 * pound) / ounce;
            case 3: answer = (arg1 * pound) / pound;
    }
    } // end arg2 switch
    return answer;
}

我弄乱了逻辑,但看不到哪里。任何帮助,将不胜感激。


问题答案:

您缺少break声明:

case 0: 
   answer = (arg1 * milligram) / milligram;
   break;
   ...


 类似资料:
  • 问题内容: 我在用Java为Android应用程序编写一些简单的代码,但出现了这些错误。 而恒定 这是因为我使用过,然后将类型更改为,问题就解决了 我的问题是为什么我们不能将其用作案例表达。Docs说:“开关适用于byte,short,char和int基本数据类型。它还适用于枚举类型(在EnumTypes中讨论),String类以及一些包装某些基本类型的特殊类:Character,字节,短整数和整

  • 本文向大家介绍Java中Switch Case使用字符串,包括了Java中Switch Case使用字符串的使用技巧和注意事项,需要的朋友参考一下 Java 7的引入增强了Switch的case,即它也支持字符串。 首先,设置一个字符串- 现在,在switch中使用相同的字符串,如下所示- 示例 现在,像平常使用SWITCH CASE一样检查每个字符串是否使用大小写。以下是在Switch Case

  • > case表达式的计算值必须为。 case(t)表达式必须具有与switch(t)相同的类型,其中t是类型(字符串)。 如果运行此代码: 是否意味着不是编译时间常量?

  • 我有两种枚举类型(并希望用户能够添加自己的)。 如果我不在接受枚举类型的方法中使用枚举属性,这就很好。 但是,如果我希望模板E被识别为一个枚举(在这里的开关中使用),我会得到错误“不能打开类型E的值”(在Eclipse中,开关(E)中的“E”带有红色下划线) 我对擦除有一点了解,它在编译时擦除了关于模板的所有信息,所以这就是问题所在。但是我尝试传入clazz类或者实现一个接口都没有成功。对此有什么

  • 问题内容: 为什么下面的代码: 给出错误: 在循环外继续 问题答案: 失败是switch语句的标准行为,因此,在switch语句中使用Continue没有意义。Continue语句仅在for / while / do..while循环中使用。 根据我对您意图的理解,您可能想写: 我还建议您将默认条件放在最后。 编辑:continue语句不能在switch语句中使用并不完全正确。(带有理想标记的)