您的位置:程序门 -> java -> j2se / 扩展类



java中一个关于控制结构的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


java中一个关于控制结构的问题
发表于:2008-01-10 22:51:43 楼主
我做了一个登录框的程序,可是有个问题感觉很奇怪!程序如下;
import   javax.swing.joptionpane;
import   javax.swing.jdialog;
import   javax.swing.jlabel;
import   javax.swing.jtextfield;
import   javax.swing.jpasswordfield;
import   javax.swing.jpanel;
import   javax.swing.jframe;
import   javax.swing.jbutton;
import   java.awt.dimension;
import   java.awt.borderlayout;
import   java.awt.flowlayout;
import   java.awt.toolkit;
import   java.awt.event.windowlistener;
import   java.awt.event.windowevent;
import   java.awt.event.windowadapter;
import   java.awt.event.actionlistener;
import   java.awt.event.actionevent;

public   class   logintest   extends   jframe
{
      private   jpanel   panel1   =   new   jpanel();
      private   jpanel   panel2   =   new   jpanel();
      private   jpanel   panel3   =   new   jpanel();
      private   jlabel   lblname   =   new   jlabel("姓名");
      private   jlabel   lblpass   =   new   jlabel("密码");
      private   jtextfield   field1   =   new   jtextfield(10);
      private   jpasswordfield   field2   =   new   jpasswordfield(10);
      private   jbutton   btnlogin   =   new   jbutton("登录");
      private   jbutton   btnexit   =   new   jbutton("退出");

      public   logintest(string   title)
      {
              super(title);
             
              this.add(panel1,borderlayout.north);
              this.add(panel2,borderlayout.center);
              this.add(panel3,borderlayout.south);

              panel1.setlayout(new   flowlayout(flowlayout.center,10,15));
              panel2.setlayout(new   flowlayout(flowlayout.center,10,9));
              panel3.setlayout(new   flowlayout(flowlayout.center,24,8));

              panel1.add(lblname);
              panel1.add(field1);

              panel2.add(lblpass);
              panel2.add(field2);

              panel3.add(btnlogin);
              panel3.add(btnexit);
             
              addwindowlistener(new   windowadapter()
              {
                  public   void   windowclosing(windowevent   event)
                  {
                        system.exit(0);
                  }
              });

            jdialog.setdefaultlookandfeeldecorated(true);
            btnlogin.addactionlistener(new   actionlistener()
            {
                  public   void   actionperformed(actionevent   event)
                  {
                      if(field1.gettext().tostring().equals("")   &   field2.gettext().tostring().equals(""))
                      {
                          joptionpane.showconfirmdialog(logintest.this,"用户名和密码都不能为空","警告",
joptionpane.yes_no_option,joptionpane_error_message);
                      }

                    else   if(field1.gettext().tostring().equals(""))
                    {
                        joptionpane.showconfirmdialog(logintest.this,"用户名不能为空","警告",
joptionpane.yes_no_option,joptionpane_error_message);
                    }

                    else   if(field2.gettext().tostring().equals(""))
                    {
                        joptionpane.showconfirmdialog(logintest.this,"密码不能为空","警告",
joptionpane.yes_no_option,joptionpane_error_message);
                    }
                  }
            });
            this.setresizable(flase);
            setsize(400,300);
            dimension   d   =   toolkit.getdefaulttoolkit().getscreensize();
            this.setlocation((d.width-400)/2,(d.height-300)/2);
            setvisible(true);
      }

      public   static   void     main(string[]   args)
      {
                jframe.setdefaultlookandfeeldecorated(true);
                new   logintest("登录");
      }
}

上面这段程序没有问题,就是想不通的是那个if...else语句.我如果把第二和第三个else语句全部写成if,如;
  btnlogin.addactionlistener(new   actionlistener()
            {
                  public   void   actionperformed(actionevent   event)
                  {
                      if(field1.gettext().tostring().equals("")   &   field2.gettext().tostring().equals(""))
                      {
                          joptionpane.showconfirmdialog(logintest.this,"用户名和密码都不能为空","警告",
joptionpane.yes_no_option,joptionpane_error_message);
                      }

                    if(field1.gettext().tostring().equals(""))
                    {
                        joptionpane.showconfirmdialog(logintest.this,"用户名不能为空","警告",
joptionpane.yes_no_option,joptionpane_error_message);
                    }

                    if(field2.gettext().tostring().equals(""))
                    {
                        joptionpane.showconfirmdialog(logintest.this,"密码不能为空","警告",
joptionpane.yes_no_option,joptionpane_error_message);
                    }
                  }
            });

当我两个输入框都为空的时候,先弹出用户名和密码不能为空的对话框,接着另外两个对话框也弹出来了,如过我把第三个else语句直接写成else,如;
  btnlogin.addactionlistener(new   actionlistener()
            {
                  public   void   actionperformed(actionevent   event)
                  {
                      if(field1.gettext().tostring().equals("")   &   field2.gettext().tostring().equals(""))
                      {
                          joptionpane.showconfirmdialog(logintest.this,"用户名和密码都不能为空","警告",
joptionpane.yes_no_option,joptionpane_error_message);
                      }

                    else   if(field1.gettext().tostring().equals(""))
                    {
                        joptionpane.showconfirmdialog(logintest.this,"用户名不能为空","警告",
joptionpane.yes_no_option,joptionpane_error_message);
                    }

                    else(field2.gettext().tostring().equals(""))
                    {
                        joptionpane.showconfirmdialog(logintest.this,"密码不能为空","警告",
joptionpane.yes_no_option,joptionpane_error_message);
                    }
                  }
            });

程序就抱错,说我     else(field2.gettext().tostring().equals(""))不是语句,并且后面还差;非要if后面的两个控制语句
都要用else   if才不会错,所以我一直感到很疑惑,望大家指点指点是什么原因.按理说应该是if...else   if....else或者if...if...if都可以啊!
 
发表于:2008-01-10 23:41:211楼 得分:0
if         假如....就   ....
else     不然   就.....

[不然]   这个语义   还能跟条件吗?

else   if   只是一个   组合写法
if(...){...}else   if(...){...}   就是下面的意思
if(...){...}else{if(...){...}}


发表于:2008-01-14 23:12:532楼 得分:0
只有else   if是不可以的
发表于:2008-01-14 23:56:273楼 得分:0
按有几个群,你不妨加进去,可以和大家一起讨论啊.........46986340,28039577,4804620                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
在那里看看有无能回答你的,谢谢,lz,甭忘了给俺分哦,谢谢lz
发表于:2008-01-17 17:39:044楼 得分:0
if((user_name=="")&&(pwd==""))
{
msg;
}
else
{
if(user_name==""){
msg;
}
if(pwd==""){
msg;
}
}

楼主自己再悟下   if   else结构
发表于:2008-01-17 17:39:325楼 得分:0
java code
if((user_name=="")&&(pwd=="")) { msg; } else { if(user_name==""){ msg; } if(pwd==""){ msg; } } 楼主自己再悟下 if else结构


快速检索

最新资讯
热门点击