我有兩個類,Main1和一個日期(我自己定義的日期類)。我正在嘗試獲取用戶輸入的日,月和年,然後嘗試檢查這是否是使用我的日期類的有效日期。我真的很困惑,不確定這是否正確。JAVA-無法檢查用戶輸入日期是否正確
繼承人爲MAIN1類的代碼:
public class Main1 {
public static void main(String[] args){
int myDay = 0, myMonth = 0, myYear = 0;
boolean dataCorrect = false;
date travelDate; // travelDate will hold the date entered
do {
try {
do {
myDay = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter the day: "));
myMonth = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter the month: "));
myYear = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter the year: "));
travelDate = new date(myDay,myMonth,myYear);
} while (travelDate.checkInputs(travelDate.formDate()) == false); // keeps looping until the date entered is correct
dataCorrect = true;
}
catch(Exception e) {
JOptionPane.showMessageDialog(null, "Error! Enter a correct date");
}
} while (dataCorrect == false);
JOptionPane.showMessageDialog(null, myDay + "-" + myMonth + "-" + myYear);
}
}
這是我自己定義的日期類代碼:
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class date {
private int day;
private int month;
private int year;
private String userTravel;
// Constructor
public date(int d, int m, int y) {
setDate(d,m,y);
}
// Methods
public void setDate(int d, int m, int y) {
setDay(d);
setMonth(m);
setYear(y);
}
public String formDate() {
userTravel = day + "-" + month + "-" + year;
return userTravel;
}
public boolean checkInputs(String inDate) {
if (inDate == null)
return false;
//set the format to use as a constructor argument
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
if (inDate.trim().length() != dateFormat.toPattern().length())
return false;
dateFormat.setLenient(false);
try {
//parse the inDate parameter
dateFormat.parse(inDate.trim());
}
catch (ParseException pe) {
return false;
}
return true;
}
public void setDay(int d) {
day = d;
}
public void setMonth(int m) {
month = m;
}
public void setYear(int y) {
year = y;
}
我也不能確定,如果該方法的代碼checkInputs是正確的。
編輯:我已經刪除了如下在答案中所述的IF語句,謝謝。 只是想問,如果有反正我可以強制用戶輸入一個四位數的年份YYYY總是或它將保持循環,直到發生這種情況
那麼究竟是怎麼回事?你在期待什麼? – david99world 2013-03-27 12:45:14
每當我運行它時,它都會陷入無限循環,要求我爲日,月和年。我期待它驗證一個日期,然後將其輸出到屏幕上。 – Khalid 2013-03-27 12:46:44