import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class JVA310 extends JFrame{
private JPanel jp1; //放置輸入出生年月日元件
private JTextField ty,tm,td;
private JLabel label1,label2,label3,label4;
private JButton b;
private int year,month,day;
private int yearNow,monthNow,dayNow;
private int result;
private int md[]={0,31,29,31,30,31,30,31,31,30,31,30,31};
public JVA310(){
super("計算年齡");
Container con = getContentPane();
jp1 = new JPanel();
jp1.setLayout(new FlowLayout(FlowLayout.CENTER));
//求得目前系統日期
Calendar cal = Calendar.getInstance();
//求得目前系統的西元年
yearNow = cal.get(Calendar.YEAR);
//求得目前系統的月份(一月會回傳0,故加1後才是真正的月份)
monthNow = cal.get(Calendar.MONTH)+1;
//求得目前系統的日期
dayNow = cal.get(Calendar.DATE);
//設定GUI
label4 = new JLabel("請輸入出生年月日",JLabel.CENTER);
con.add(label4,BorderLayout.NORTH);
label1 = new JLabel("年(YYYY)");
jp1.add(label1);
ty= new JTextField(4);
jp1.add(ty);
label2 = new JLabel("月(MM) ");
jp1.add(label2);
tm= new JTextField(4);
jp1.add(tm);
label3 = new JLabel("日(dd) ");
jp1.add(label3);
td= new JTextField(4);
jp1.add(td);
con.add(jp1,BorderLayout.CENTER);
b = new JButton("計算結果");
//該按鈕被按下時的事件驅動
b.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
try{
//檢查是否有欄位沒填入資料
if((ty.getText()==null)||(tm.getText()==null)||(td.getText()==null) )
JOptionPane.showMessageDialog(null,"請輸入完整的出生年月日");
else {
//取得輸入的西元年
year = Integer.parseInt(ty.getText());
//取得輸入的月份
month = Integer.parseInt(tm.getText());
//取得輸入的日
day = Integer.parseInt(td.getText());
//檢查是否所輸入出生年月日不正確
if( (year>yearNow)||(year<1)||(month>12)||(month<1) ) /
JOptionPane.showMessageDialog(null,"所輸入的出生年月日不正確");
else if(day>md[month] || day<1){
JOptionPane.showMessageDialog(null,"所輸入的出生年月日不正確");
}
else
{
//計算實際年齡
if( monthNow > month )
result = yearNow - year ;
else if( (monthNow == month)&&(dayNow>=day) )
result = yearNow - year;
else
result = yearNow - year - 1 ;
//印出實際年齡
JOptionPane.showMessageDialog(null,"你現在的實際年齡為"+result+"歲");
}
}
}catch(Exception ee){
JOptionPane.showMessageDialog(null,"所輸入的出生年月日不正確");
}
}
}
);
con.add(b,BorderLayout.SOUTH);
//設定JFrame大小
setSize(150,180);
//讓JFrame不能設定大小
setResizable(false);
setVisible(true);
}
public static void main(String args[]){
JVA310 age=new JVA310();
//讓JFrame結束的事件驅動
age.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
您好~
回覆刪除如果輸入為空的話
這個程式好想不能執行到這一段
JOptionPane.showMessageDialog(null,"請輸入完整的出生年月日");
不會顯示 請輸入完整的出生年月日
卻顯示 所輸入的出生年月日不正確
您好~
回覆刪除我找到解決辦法了
if((ty.getText()==null)||(tm.getText()==null)||(td.getText()==null) )
將判斷式內容改成 .getText().equals("") 可以判斷