java选择结构无法实现

来源:百度知道 编辑:UC知道 时间:2024/05/13 12:06:01
private void JComboBoxMonthItemStateChanged(java.awt.event.ItemEvent evt) {
// TODO add your handling code here:

leap=YEAR%4==0&&YEAR%100!=0||YEAR%400==0;
month=(String)JComboBoxMonth.getSelectedItem();
if(month.startsWith("4")||month.startsWith("6")||month.startsWith("9")||month.startsWith("11"))
{
JComboBoxDay.removeItem("31");
}

else if((!leap)&&month=="2")
{
JComboBoxDay.removeAllItems();

JComboBoxDay.addItem("26");
JComboBoxDay.addItem("27");
JComboBoxDay.addItem("28");
JComboBoxDay.addItem("29");
JComboBoxDay.addItem("30");
JComboBoxDay.addItem("31");

根据你描述说明你leap的值是不对的,因为你用了&&所以前面部分为真的话后面部分虚拟机是不判断真假的,由于两个判断条件里面都有month=="2",但是注释了leap的时候!leap才好使证明了你!leap出现了永远为FALSE的情况,也就是leap永远为真,所以每次判断到(leap)&&month=="2"的时候到leap的地方永远为真,所以永远都是到这里就进入此分支了,当屏蔽掉这个的时候永远为假的!leap和month=="2"做&&运算由于后面的内容按照你的操作肯定是永真的所以这个时候整个表达式(!leap)&&month=="2")永真,流程才会进入这里,所以你只要加一句打印leap就能看出来是不是你取任何值的时候都是true,就知道自己哪错了