我做了一个登录框的程序,可是有个问题感觉很奇怪!程序如下;
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都可以啊!
 

解决方案 »

  1.   

    if    假如....就 ....
    else  不然 就.....[不然] 这个语义 还能跟条件吗?else if 只是一个 组合写法
    if(...){...}else if(...){...} 就是下面的意思
    if(...){...}else{if(...){...}}
      

  2.   

    只有else if是不可以的
      

  3.   

    按有几个群,你不妨加进去,可以和大家一起讨论啊.........46986340,28039577,4804620                                                                                                                                                                                                                                                               
    在那里看看有无能回答你的,谢谢,LZ,甭忘了给俺分哦,谢谢LZ
      

  4.   

    if((user_name=="")&&(pwd==""))
    {
    msg;
    }
    else
    {
    if(user_name==""){
    msg;
    }
    if(pwd==""){
    msg;
    }
    }楼主自己再悟下 IF ELSE结构
      

  5.   

    if((user_name=="")&&(pwd==""))
    {
    msg;
    }
    else
    {
    if(user_name==""){
    msg;
    }
    if(pwd==""){
    msg;
    }
    }楼主自己再悟下 IF ELSE结构