java 无效异常_java – 如果传入无效值,则抛出异常

我有一个类,现在我正在更改setter以在传入无效值时抛出异常.

这个需要:

> A.(dueDay必须介于1和31之间,dueMonth必须介于1和12之间.)异常显示不在setter方法中处理.

> B.更改TodoItem的主要方法,以便它向用户询问任务,截止日期和到期月份,并将此信息存储为新的TodoItem.

> C.更改构造函数,以便将其称为新的setter方法.如果抛出异常,则应在main方法中处理.应告知用户他们输入无效的日期或月份,并要求提供正确的日期或月份.

我的班级是:

(我已经更改了setter以抛出异常,但是,它不起作用,我想我应该更改main函数的构造函数,但是我不知道该怎么做.)

public class TodoItem {

private String task;

private int dueMonth;

private int dueDay;

private boolean isDone;

// class variables

private static int numItems;

private static int numDone;

// constructor

public TodoItem(String taks,int day,int month) {

this.task = task;

dueDay = day;

dueMonth = month;

isDone = false;

numItems++;

}

// second constructor

public TodoItem(String task) {

this.task = task;

isDone = false;

numItems++;

}

public static void WriteToFile(String a){

a="toString.txt";

String task;

int dueMonth;

int dueDay;

boolean isDone;

}

// toString method

public String toString() {

return a+task + ", due: " + dueMonth + "/" + dueDay + (isDone?", done":", todo");

}

// getters

public int getDueDay() {

return dueDay;

}

public int getDueMonth() {

return dueMonth;

}

// setters

public void setDueDay(int day) throws Exception {

if (day >= 1 && day <=31) {

dueDay = day;

}

else {

throw new Exception ("Error: invalid due day");

}

}

public void setDueMonth(int month) throws Exception{

if (month >= 1 && month <= 12) {

dueMonth = month;

}

else {

throw new Exception("Error: invalid due month");

}

}

// Checks off an item as being done.

// If the item was already marked as done, don't increase the counter

// (this was not specified in the problem set instructions).

public void markAsDone() {

if (!isDone) {

isDone = true;

numDone++;

}

}

// returns the percentage of to-do list items completed

public static double percentDone() {

return (double) numDone/numItems*100;

}

/**

* @param args

* @throws Exception

*/

public static void main(String[] args) throws Exception {

// constructor 1

TodoItemDone item1 = new TodoItemDone("Walk dog",12,3);

TodoItemDone item2 = new TodoItemDone("Do 326 project",16,3);

TodoItemDone item3 = new TodoItemDone("Put away winter boots",21,3);

// constructor 2

TodoItemDone item4 = new TodoItemDone("Buy groceries");

TodoItemDone item5 = new TodoItemDone("Clean bathroom");

TodoItemDone item6 = new TodoItemDone("Study for myself");

// toString (and verify constructors)

System.out.println("The 6 items are:");

System.out.println(item1);

System.out.println(item2);

System.out.println(item3);

System.out.println(item4);

System.out.println(item5);

System.out.println(item6);

System.out.println();

System.out.println("Setting due dates and months on the last 3:");

// setDueDay

item4.setDueDay(1);

item5.setDueDay(5);

item6.setDueDay(52);

// setDueMonth

item4.setDueMonth(12);

item5.setDueMonth(6);

item6.setDueMonth(0);

System.out.println("The last 3 items are now:");

System.out.println(item4);

System.out.println(item5);

System.out.println(item6);

// Test percentDone() and markAsDone()

System.out.println();

System.out.println("About to complete some items:");

System.out.println("percent done: " + percentDone());

item1.markAsDone();

System.out.println("Item 1 is now: " + item1);

System.out.println("percent done: " + percentDone());

item1.markAsDone();

System.out.println("Item 1 is now: " + item1);

System.out.println("percent done: " + percentDone());

item2.markAsDone();

System.out.println("Item 2 is now: " + item2);

System.out.println("percent done: " + percentDone());

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值