为什么在 LocalDate 和 Month 中有 giving cannot find symbol 类
why there is giving can not find symbol in LocalDate and Month classes
import java.time.LocalDate;
import java.time.Month;
public class Birthday{
public static void main(String args[]) {
// declare variables for birthday
int birthDate = 23;
Month birthMonth = Month.SEPTEMBER;
// get current date
LocalDate currentDate = LocalDate.now();
System.out.println("Todays Date: " + currentDate);
// get current date and month
int date = currentDate.getDayOfMonth();
Month month = currentDate.getMonth();
if(date == birthDate && month == birthMonth) {
System.out.println("HAPPY BIRTHDAY TO YOU !!");
}
else {
System.out.println("Today is not my birthday.");
}
}
}
您的代码运行成功。参见 code run live at IdeOne.com.
Java8+
由于您提供的细节很少,我猜测您的问题是由于使用了非常旧的 Java 版本。
java.time 类 内置于 Java 8 及更高版本中,并且 Android 26+.
- 如果使用 Java 6 或 7,通过添加 java.time 获得大部分 java.time 功能=21=] 库到您的 Java 项目。
- 如果使用 早期的 Android,最新的工具通过“API 脱糖。
我将继续提及您的代码中的其他几个问题。
Enum#equals
您应该将 ==
的使用替换为对象引用,例如 Month
objects. While that technically works with enum objects, using ==
on objects is a bad habit, with no benefit gained over calling Enum#equals
.
if( date == birthDate && month.equals( birthMonth ) ) {
MonthDay
使用MonthDay
制作一个更简短的版本。
MonthDay currentMonthDay = MonthDay.now() ;
MonthDay birthMonthDay = MonthDay.of( Month.SEPTEMBER , 23 ) ;
if( currentMonthDay.equals( birthMonthDay ) ) {…}
或者一行:
if( MonthDay.now().equals( MonthDay.of( Month.SEPTEMBER , 23 ) ) ) { … }
import java.time.LocalDate;
import java.time.Month;
public class Birthday{
public static void main(String args[]) {
// declare variables for birthday
int birthDate = 23;
Month birthMonth = Month.SEPTEMBER;
// get current date
LocalDate currentDate = LocalDate.now();
System.out.println("Todays Date: " + currentDate);
// get current date and month
int date = currentDate.getDayOfMonth();
Month month = currentDate.getMonth();
if(date == birthDate && month == birthMonth) {
System.out.println("HAPPY BIRTHDAY TO YOU !!");
}
else {
System.out.println("Today is not my birthday.");
}
}
}
您的代码运行成功。参见 code run live at IdeOne.com.
Java8+
由于您提供的细节很少,我猜测您的问题是由于使用了非常旧的 Java 版本。
java.time 类 内置于 Java 8 及更高版本中,并且 Android 26+.
- 如果使用 Java 6 或 7,通过添加 java.time 获得大部分 java.time 功能=21=] 库到您的 Java 项目。
- 如果使用 早期的 Android,最新的工具通过“API 脱糖。
我将继续提及您的代码中的其他几个问题。
Enum#equals
您应该将 ==
的使用替换为对象引用,例如 Month
objects. While that technically works with enum objects, using ==
on objects is a bad habit, with no benefit gained over calling Enum#equals
.
if( date == birthDate && month.equals( birthMonth ) ) {
MonthDay
使用MonthDay
制作一个更简短的版本。
MonthDay currentMonthDay = MonthDay.now() ;
MonthDay birthMonthDay = MonthDay.of( Month.SEPTEMBER , 23 ) ;
if( currentMonthDay.equals( birthMonthDay ) ) {…}
或者一行:
if( MonthDay.now().equals( MonthDay.of( Month.SEPTEMBER , 23 ) ) ) { … }