java编程过程中的小问题!

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次循环了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-23
当然是0呀 兄弟. 他是包左不包又, 左闭右开区间,
还有你这个问题 是js有这么一道题.
js中的 substring() 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。(和java 的一样)
js中的 substr() 的参数指定的是子串的开始位置和长度
第2个回答  2017-10-23
整体逻辑:
用户名密码验证次数为3次

输入用户名,密码,

匹配则提示成功,退出程序, 问题1处break就是为了这个功能

不匹配则验证次数减1, 继续输入用户名密码. 在问题3处break会造成次数没用完就直接退出程序了

次数用完,提示失败,退出程序