package exercise;
import java.util.Scanner;
public class testfor3 {
package exercise;
import java.util.Scanner;
public class testfor3 {
public static void main(String[] args) {
String username = "aa";
String password = "0000";
Scanner input = new Scanner(System.in);
for (int i = 3; i >= 1; i--) {
System.out.print("请输入用户名:");
String name = input.next();
System.out.println("请输入密码:");
String pas = input.next();
if (name.equals(username) && pas.equals(password)) {
System.out.println("\n欢迎进入购物系统!");
break;//(问题1)
} else if (i != 1) {
int lefttime = i - 1;//(问题2)
System.out.println("\n用户名和密码不匹配");
System.out.println("你还有" + lefttime + "次机会,请重新输入:");
//(问题3) } else {
System.out.println("\n您没有权限进入系统!");
}
}
}
}
问题1,这个循环程序的出现的break有什么什么,结束第一个循环吗,能不能解释下。是不是如果用户名和密码相符合,结束这个循环,那么为什么不在问题3的地方也加一个break呢?我可以解释为当i不等于1的时候,输出......然后结束这个循环。
问题2,这个lefttime不应该赋值为i吗,你看,当i=3时,经历第一个循环,然后i--,不就变成2了吗,直接输出呀int lefttime=i!
问题2 我已经知道了,主要是问题1很困扰,希望大家解答下。
这个程序的设计是用户名输入用户名和密码错误后,提示还有i次机会,大于等于3次之后就退出整个程序。
问题1:如果用户名和密码都正确,提示“欢迎进入购物系统!”,break退出循环。
问题2:因为是else if,所以是在用户名和密码有一个不正确的情况下,且i不等于1的情况下,提示“用户名和密码不匹配”,然后lefttime其实是没必要的,可以直接写成i-1更为简洁(此时的i还没有-1哦,要等整个循环体结束才会-1)
System.out.println("你还有" + (i - 1) + "次机会,请重新输入:");问题3:如果你在这里加个break的话,循环就结束了,也就是说当你输错一次用户名或密码,程序就结束了,也就不会进行3次循环了。