【发布时间】:2021-05-25 16:44:05
【问题描述】:
我想通过扫描器实例化另一个类的对象,但我需要传递的参数之一是 LocalDate 类型。这就是为什么我在我的主类中创建了一个方法,以便
- 按给定顺序(例如 dd.MMM.yyyy)向用户询问字符串输入
- 然后我的程序接受该输入并将其保存为字符串,以便稍后将其显示给用户
但我遇到了一个错误。下面是我的生日课和主课的相关部分。
Birthday.java:
public class Birthday {
String name;
LocalDate date;
int age;
boolean gift;
public Birthday(String name, LocalDate date, int age, boolean gift) {
this.name = name;
this.date = date;
this.age = age;
this.gift = gift;
}
}
Main.java:
public static void addBirthday(){
Scanner scan = new Scanner(System.in);
//below I want to instantiate a Birthday obj
Birthday bday = new Birthday(scan.nextLine(), addDate(), scan.nextInt(), scan.nextBoolean());
bdays.add(bday); //this is referring to an ArrayList I didn't include in this excerpt
scan.close();
}
...
public static String addDate() {
Scanner scan = new Scanner(System.in);
LocalDate ld = LocalDate.of(scan.nextInt(), scan.nextInt(), scan.nextInt());
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd. MMM. yyyy");
System.out.println(ld.format(dtf));
scan.close();
//return addedDate??;
}
我不断收到的实例化错误是“不兼容的类型:java.lang.String 无法转换为 java.time.LocalDate”,使得 addDate() 方法 void 导致另一个错误说方法不能用。
注释掉的 return 语句是我认为可能的:打印出 System.out.println(ld.format(dtf)); 并将其存储在名为 addedDate 的字符串中?但对我而言,这似乎是一个非常错误的思考过程,所以最后我想知道我在 addDate() 方法中分别要求年/月/日的方法是否是什么问题?
【问题讨论】:
-
“使
addDate()方法无效会导致另一个错误”您不应该通过猜测进行调试。想想在代码上下文中创建该方法void意味着什么。您应该自己看看这不是修复代码的方法。 -
Birthday构造函数的第二个参数需要LocalDate。你传递了addDate(),它返回一个String。如果您想要LocalDate,请不要返回字符串。 -
您的
Birthdayconstructor 将LocalDate作为其第二个参数。因此addDate()的返回类型必须为LocalDate。 -
@all 我想为自己的错误大喊大叫,天哪……我不敢相信这基本上就是这样。谢谢各位!
-
这能回答你的问题吗? Java string to date conversion
标签: java java.util.scanner instantiation localdate datetimeformatter