Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果传入无效值,则引发异常_Java_Exception_Throw - Fatal编程技术网

Java 如果传入无效值,则引发异常

Java 如果传入无效值,则引发异常,java,exception,throw,Java,Exception,Throw,我有一个类,现在我正在更改setter,以便在传入无效值时引发异常。 它要求: A.(dueDay必须介于1和31之间,dueMonth必须介于1和12之间。)不能在setter方法中处理异常显示 B.更改TodoItem的主要方法,以便它向用户询问任务、到期日和到期月,并将此信息存储为新的TodoItem C.更改构造函数,以便调用新的setter方法。如果抛出异常,则应在main方法中处理该异常。应告知用户他们输入的日期或月份无效,并要求用户输入正确的日期或月份 我的班级是: (我已经更

我有一个类,现在我正在更改setter,以便在传入无效值时引发异常。 它要求:

  • A.(
    dueDay
    必须介于1和31之间,
    dueMonth
    必须介于1和12之间。)不能在setter方法中处理异常显示
  • B.更改
    TodoItem
    的主要方法,以便它向用户询问任务、到期日和到期月,并将此信息存储为新的
    TodoItem
  • C.更改构造函数,以便调用新的setter方法。如果抛出异常,则应在main方法中处理该异常。应告知用户他们输入的日期或月份无效,并要求用户输入正确的日期或月份
我的班级是:

(我已经更改了setter以引发异常,但是,它不起作用,我认为应该更改主函数的构造函数,但是我不知道如何做。)

公共类待办事项{
私有字符串任务;
私人月;
私人国际日;
专用布尔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)