繁体   English   中英

在if else语句java中正确使用子字符串

[英]Using substrings properly in an if else statement java

我想知道我的逻辑和语法是否符合if语句? 查看语法时,我所有的if语句都有意义吗? 我正在尝试使用RentalDate的前两个数字来确定月份,并查看他们将获得哪个季节费用。 谢谢!

公开double确定价格(){

    double price;

    if (rentalDate.substring(0,2) == ("01") || rentalDate.substring(0,2) == ("02"))
    {
        price = WINTER_CHARGE;
    }
    else if (rentalDate.substring(0,2) == ("12"))
    {
        price = WINTER_CHARGE;
    }
    else if (rentalDate.substring(0,2) == ("03") || rentalDate.substring(0,2) == ("04") || rentalDate.substring(0,2) == ("05"))
    {
        price = SPRING_CHARGE;
    }
    else if (rentalDate.substring(0,2) == ("06") || rentalDate.substring(0,2) == ("07") || rentalDate.substring(0,2) == ("08"))
    {
        price = SUMMER_CHARGE;
    }
    else
    {
        price = FALL_CHARGE;
    }

    return price;   
}

不,他们没有道理。 您正在使用引用相等对字符串进行比较,这是Java新手经常遇到的错误。

您应该更改所有语句以使用.equals()方法。 这将比较Strings的 ,而不是references的值,如果您来自C / C ++背景,则也可以将其视为“指针”。

因此,基本上,这是:

rentalDate.substring(0,2) == ("01")

成为...

"01".equals(rentalDate.substring(0,2))

您可以在这里阅读更多信息: https : //stackoverflow.com/a/513839/88111

我在解析月份后会使用一个开关:

// can throw NumberformatException
int rentalMonthInt = Integer.parseInt(rentalDate.substring(0,2));

switch(rentalMonthInt){
    case 1:
    case 2:
    case 12:
        return WINTER_CHARGE;
    // add more groups...
    default:
        System.out.err("month out of range..." + rentalMonthInt);
        // handle bad month
}

请注意,1、2和12的情况正在执行相同的代码,因为在最后一条之前没有任何指令或break s。 您可以通过这种方式将月份分组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM