//来源于《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;
}
}