在 if else 语句中正确使用子字符串 java
Using substrings properly in an if else statement java
我想知道我的逻辑和语法对这个 if else 语句是否有意义?在查看语法时,我所有的 if 语句都有意义吗?我正在尝试使用 rentalDate 的前两个数字来确定月份并查看他们将获得哪个季节的费用。谢谢!
public 双确定价格 () {
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;
}
不,它们没有意义。您正在使用 reference equality 比较字符串,这是刚接触 Java.
时的常见错误
您应该更改所有语句以使用 .equals()
方法。这将比较字符串的 values,而不是 references 的值,您也可以将其视为 "pointers"如果您来自 C/C++ 背景。
基本上,这个:
rentalDate.substring(0,2) == ("01")
变成...
"01".equals(rentalDate.substring(0,2))
您可以在这里阅读更多内容:
我会在解析月份后使用开关:
// 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
。您可以用这种方式对月份进行分组。
我想知道我的逻辑和语法对这个 if else 语句是否有意义?在查看语法时,我所有的 if 语句都有意义吗?我正在尝试使用 rentalDate 的前两个数字来确定月份并查看他们将获得哪个季节的费用。谢谢!
public 双确定价格 () {
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;
}
不,它们没有意义。您正在使用 reference equality 比较字符串,这是刚接触 Java.
时的常见错误您应该更改所有语句以使用 .equals()
方法。这将比较字符串的 values,而不是 references 的值,您也可以将其视为 "pointers"如果您来自 C/C++ 背景。
基本上,这个:
rentalDate.substring(0,2) == ("01")
变成...
"01".equals(rentalDate.substring(0,2))
您可以在这里阅读更多内容:
我会在解析月份后使用开关:
// 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
。您可以用这种方式对月份进行分组。