flag标记的运用


//来源于《java开发实战经典》第12章课后习题7
//主要是flag标记的插放位置要逻辑清楚。
import java.io.*;

public class AndrewK12_197 {

       public static void main(String[] args) {
              String str1 = null;
              String str2 = null;
              int a = 0;

              boolean flag_1 = false;
              // boolean flag2 = false;
              while (flag_1 == false) {// 判断是否有账号密码是否合拍。
                     boolean flag = false;// 账号密码错误后需要重新标记.
                     boolean flag1 = false;// 账号密码错误后需要重新标记.
                     System.out.println("标记1判断是否有账号密码是否合拍");
                     if (a >= 3) {
                            break;
                     }
                     String str = new InputData().getString("请输入帐户名和密码,中间以空格隔开:");
                     while (flag == false) {// 判断是否有账号。********************************
                            System.out.println("标记2判断是否有账号");
                            if (a >= 3) {
                                   break;
                            }

                            /*
                             * 11---------------------------------------------------------------------------
                             * -------------------------- ----------------------
                             */
                            if (str.equals("")) {
                                   new InputData().getString("你还没有输入帐户名和密码(帐户名和密码中间以空格隔开),请输入:");
                                   a++;
                                   System.out.println("没有输入用户名和密码,第" + a + "次错误!");
                                   if (a >= 3) {
                                          break;
                                   }
                            } // 第一个假设。
                            /*
                             * 11---------------------------------------------------------------------------
                             * -------------------- -----------------------------
                             */

                            /*
                             * 12---------------------------------------------------------------------------
                             * -------------------------- ----------------------
                             */
                            else {
                                   flag = true;// 这个漏了找了一整天.
                                   str = str.trim();
                                   String s[] = str.split(" ");
                                   /*
                                    * 21---------------------------------------------------------------------------
                                    * -------------------- -----------------------------
                                    */
                                   if (s.length == 1) {

                                          str1 = s[0];
                                          System.out.println("只输入了用户名,请继续输入密码!");
                                          while (flag1 == false) {// 判断是否有密码!
                                                 System.out.println("标记3判断是否有密码");
                                                 if (a >= 3) {
                                                        break;
                                                 }
                                                 str2 = new InputData().getString("请输入密码:");
                                                 if (str2.equals("")) {
                                                        a++;
                                                        System.out.println("没有密码,第" + a + "次错误!");
                                                        if (a >= 3) {
                                                               break;
                                                        }
                                                        System.out.println("密码没有输入!");

                                                 } else {// 这段代码为什么不能进入?各种标记错误导致!
                                                        flag1 = true;
                                                        if (str1.equals("mldn") && str2.equals("hello")) {
                                                               System.out.println("登陆成功");
                                                               flag_1 = true;
                                                        } else {
                                                               System.out.println("账号密码输入错误!");
                                                               a++;
                                                               System.out.println("密码输入错误,第" + a + "次错误!");
                                                               if (a >= 3) {
                                                                      break;
                                                               }
                                                        }
                                                 }

                                          }
                                          /*
                                           * 32---------------------------------------------------------------------------
                                           * -------------- -----------------------------------
                                           */

                                   }

                                   /*
                                    * 21---------------------------------------------------------------------------
                                    * -------------------- -------------------------------
                                    */

                                   /*
                                    * 22---------------------------------------------------------------------------
                                    * -------------------- --------------------------------------
                                    */
                                   else if (s.length == 2) {

                                          str1 = s[0];
                                          flag1 = true;
                                          str2 = s[1];
                                          if (str1.equals("mldn") && str2.equals("hello")) {
                                                 System.out.println("登陆成功");
                                                 flag_1 = true;
                                          } else {
                                                 System.out.println("账号密码输入错误!");
                                                 a++;
                                                 System.out.println("账号密码不符合,第" + a + "次错误!");
                                                 if (a >= 3) {
                                                        break;
                                                 }

                                          }

                                   }
                                   /*
                                    * 22---------------------------------------------------------------------------
                                    * -------------------- -----------------------------------
                                    */
                                   else {
                                          flag = true;
                                          flag1 = true;
                                          a++;
                                          if (a >= 3) {
                                                 break;
                                          }
                                          System.out.println("输入的格式错误,请重新输入!");
                                          flag_1 = true;
                                   }

                            }
                            /*
                             * 12---------------------------------------------------------------------------
                             * -------------------------- -------------------------
                             */
                     }
              }
              System.exit(1);
       }

}

// 下面是引用类InputData

class InputData {
       private BufferedReader buf = null;

       public InputData() {
              this.buf = new BufferedReader(new InputStreamReader(System.in));
       }

       public String getString(String info) {
              String temp = null;
              System.out.println(info);
              try {
                     temp = this.buf.readLine();
              } catch (IOException e) {
                     e.printStackTrace();
              }
              return temp;
       }
}

 

你可能感兴趣的:(Java基础)