Mam klasy, teraz jestem zmieniając setter rzucić wyjątek, jeśli nieprawidłowy wprost wartość w Wymaga:.wyjątek jeśli nieprawidłowa wartość jest przekazywana w
- A. (Wskazana
dueDay
musi należeć do zakresu od 1 do 31, adueMonth
musi należeć do zakresu od 1 do 12.) Nie można traktować wyjątku metodami ustawiającymi. - B. Zmień główną metodę z
TodoItem
, aby prosiła użytkownika o zadanie, dzień i miesiąc, i zapisuje tę informację jako nowąTodoItem
. - C. Zmień konstruktor tak, aby był nazywany twoimi nowymi metodami ustawiającymi. Jeśli zostanie zgłoszony wyjątek, należy go obsłużyć metodą główną. Należy poinformować użytkownika, że wprowadził nieprawidłowy dzień lub miesiąc i poprosił o poprawny.
Moja klasa jest:
(I już zmienił setter rzucić wyjątek, jednak nie działa, myślę, że powinienem zmienić konstruktora główną funkcją jest jednak nie wiem jak zrobić)
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());
}
Proponuję rzucić 'IllegalArgumentException' –
@PeterLawrey To ma znaczenia dla zmiany tego? –
Nie jest dobrym pomysłem użycie ogólnego "wyjątku". Lepiej jest użyć wyjątku, który jest zwykle używany w tym przypadku. Również wyjątek IllegalArgumentException jest niesprawdzonym wyjątkiem, z którym początkujący mogą łatwiej pracować. –