循环结构
- 多次重复同一操作
- 问题:
- 重复干什么
- 重复多少次
- 逻辑:条件成立则执行相应的代码,直到条件不成立
- 分类:
- 直到:一直执行,直到。。。退出
- 当:当。。。则一直执行
while(){}
- 语法结构
while(条件) {//判断条件成立与否
//条件成立,则执行
}
- 条件可以直接写true,如果条件一直成立,则为死循环,最简单的死循环
- 死循环出现的问题:
- 如果条件是true,且没有跳出语句,则后面不能有代码,否则编译不通过
- 死循环导致内存溢出overflow
break:
- 跳出switchcase结构
- 跳出一层循环
do{}while()
-
结构
do { 循环体 } while(循环条件);
-
与while循环区别
- 如果条件恒成立,则没有区别
- 如果条件恒不成立,则do。。while至少执行一次
import java.util.Scanner;
public class Regist {
public static void main(String[]args) {
Scanner input = new Scanner(System.in);
//不让系统结束,直到输入3退出系统
while(true) {
//主页面代码
System.out.println("欢迎来到个人博客!");
System.out.println();
System.out.println();
System.out.println();
System.out.println("1.已有账号,登录\n2.注册新账号\n3.退出系统");
System.out.println("请选择:");
int choose = input.nextInt();
//判断选择的操作是哪个,用等值的switch
switch(choose) {
//选择登录,登录可能多次
case 1:
while(true){//一次登录不成功,多次登录,加循环
System.out.println("输入用户名:");
String name = input.next();//name 在switch中
System.out.println("输入密码:");
String pass = input.next();
//判断登录成功,则break退出循环
if (name.equals("张三")&&pass.equals("zhangsan")) {
System.out.println("1.查看用户信息\n2.修改密码\n3.充值");
break;
} else {//否则登录不成功,提示后继续循环
System.out.println("用户名或者密码错误,请重新登录");
}
}
//退出循环后用break结束switch,外面有循环,所以在主页面没有结束系统
break;
case 2:
//注册同登录,需要未知次主次,加循环
while(true) {
System.out.println("输入用户名:");
String name1 = input.next();
System.out.println("输入密码:");
String pass1 = input.next();
System.out.println("请确认密码:");
String pass2 = input.next();
//判断如果注册成功,则利用break跳出循环
if (!name1.equals("张三")&&pass1.equals(pass2)) {
System.out.println("注册成功,请登录");
break;
} else if(name1.equals("张三")){
//否则提示用户名重复,继续循环
System.out.println("用户名重复");
} else {
//提示密码不一致,继续循环
System.out.println("密码不一致");
}
}
//循环结束后利用break,结束switch
break;
case 3:
//利用return结束main方法,结束系统
return;
default:
//提示输入错误,外面有循环,继续循环,在主页面
System.out.println("输入有误请输入1 ~ 3");
}
}
}
}