Java 如果传入无效值,则引发异常
我有一个类,现在我正在更改setter,以便在传入无效值时引发异常。 它要求:Java 如果传入无效值,则引发异常,java,exception,throw,Java,Exception,Throw,我有一个类,现在我正在更改setter,以便在传入无效值时引发异常。 它要求: A.(dueDay必须介于1和31之间,dueMonth必须介于1和12之间。)不能在setter方法中处理异常显示 B.更改TodoItem的主要方法,以便它向用户询问任务、到期日和到期月,并将此信息存储为新的TodoItem C.更改构造函数,以便调用新的setter方法。如果抛出异常,则应在main方法中处理该异常。应告知用户他们输入的日期或月份无效,并要求用户输入正确的日期或月份 我的班级是: (我已经更
- A.(
必须介于1和31之间,dueDay
必须介于1和12之间。)不能在setter方法中处理异常显示dueMonth
- B.更改
的主要方法,以便它向用户询问任务、到期日和到期月,并将此信息存储为新的TodoItem
李>TodoItem
- C.更改构造函数,以便调用新的setter方法。如果抛出异常,则应在main方法中处理该异常。应告知用户他们输入的日期或月份无效,并要求用户输入正确的日期或月份李>
公共类待办事项{
私有字符串任务;
私人月;
私人国际日;
专用布尔isDone;
//类变量
私有静态整数;
私有静态int numDone;
//建造师
公共TodoItem(字符串taks,整数天,整数月){
this.task=任务;
日=日;
月=月;
isDone=false;
numItems++;
}
//第二构造器
公共TodoItem(字符串任务){
this.task=任务;
isDone=false;
numItems++;
}
公共静态void WriteToFile(字符串a){
a=“toString.txt”;
字符串任务;
每月一次;
国际决斗日;
布尔isDone;
}
//toString方法
公共字符串toString(){
返回一个+任务+”,到期日期:“+dueMonth+”/“+dueDay+(isDone?”,完成):“todo”);
}
//吸气剂
public int getDueDay(){
返回决斗日;
}
public int getduemount(){
每月返回;
}
//二传手
public void setDueDay(int day)引发异常{
如果(天>=1&&day=1&&month更改此部分:
public TodoItem(String taks,int day,int month) {
this.task = task;
dueDay = day;
dueMonth = month;
isDone = false;
numItems++;
}
为此:
public TodoItem(String task,int day,int month) {
this.task = task;
dueDay = day;
dueMonth = month;
isDone = false;
numItems++;
}
您没有将this.task
设置为更正输入参数taks
。
我正在更改你的论点名称。
也许这不是主要问题,但试着改变它
但是,它不起作用
您定义了TodoItem类,但在main()中创建了TodoItemDone。当我将TodoItem更改为TodoItemDone时,我得到了以下结果:
The 6 items are:
null, due: 3/12, todo
null, due: 3/16, todo
null, due: 3/21, todo
Buy groceries, due: 0/0, todo
Clean bathroom, due: 0/0, todo
Study for myself, due: 0/0, todo
Setting due dates and months on the last 3:
Exception in thread "main" java.lang.Exception: Error: invalid due day
at com.github.vedenin.TodoItemDone.setDueDay(TodoItemDone.java:61)
at com.github.vedenin.TodoItemDone.main(TodoItemDone.java:120)
正确地抛出异常我建议您抛出一个illegargumentexception
@PeterLawrey这对更改它很重要吗?使用泛型异常
不是一个好主意。最好使用这种情况下通常使用的异常。另外,illegargumentexception是初学者发现的未检查异常更容易使用。谢谢,但它仍然有问题。这6项是:线程“main”java.lang中的异常。错误:未解决的编译问题:a无法解决为变量。您确定要将taks
更改为task
?因为我认为这6个异常正是用于TodoItem方法的。
The 6 items are:
null, due: 3/12, todo
null, due: 3/16, todo
null, due: 3/21, todo
Buy groceries, due: 0/0, todo
Clean bathroom, due: 0/0, todo
Study for myself, due: 0/0, todo
Setting due dates and months on the last 3:
Exception in thread "main" java.lang.Exception: Error: invalid due day
at com.github.vedenin.TodoItemDone.setDueDay(TodoItemDone.java:61)
at com.github.vedenin.TodoItemDone.main(TodoItemDone.java:120)