java三大基本循环结构
1 嵌套for循环
1.1 概述
根据外层的条件,判断里层能否执行,如果能执行,就把里层代码都循环完毕后,再继续执行外层,继续判断。。
1.2 形式
for(…){
for(…){
}
}
1.3 入门案例
public class T {
public static void main(String[] args) {
// f1();
f2();
}
//总结1:当i=1时,j取到了所有满足条件的数据,1,2,3,4,5。
//也就是说外循环执行1次,内循环执行多次
private static void f1() {
for(int i=1;i<=3;i++){//外循环
System.out.println("i="+i);//1,2,3
for(int j=1;j<=5;j++){//内循环
System.out.println("j="+j);//1,2,3,4,5
}
}
}
//总结2:外循环控制行,内循环控制列
private static void f2() {
for(int i=1;i<=3;i++){
for(int j=1;j<=5;j++){
System.out.print("*");
}
System.out.println();
}
}
}
1.4 demo:打印正方形
//正方形
for(int i=1;i<5;i++){
for(int j=1;j<5;j++){
System.out.print("*");
}
System.out.println();
}
1.5 demo2:打印左直角三角形
//正直角三角形
private static void f4() {
for (int i = 0; i < 5; i++) {//外循环,控制行,是一定的
for (int j = 0; j <= i; j++) {//内循环,列是不固定的,是递增的
System.out.print("*");//保证第一行打印出来一个*,注意条件
}
System.out.println();
}
}
1.6 demo3:打印99乘法表
1*1=1
21=2 22=4
31=3 32=6 3*3=9
41=4 42=8 43=12 44=16
51=5 52=10 53=15 54=20 5*5=25
61=6 62=12 63=18 64=24 65=30 66=36
71=7 72=14 73=21 74=28 75=35 76=42 7*7=49
81=8 82=16 83=24 84=32 85=40 86=48 87=56 88=64
91=9 92=18 93=27 94=36 95=45 96=54 97=63 98=72 9*9=81
//99乘法表
private static void f4() {
for (int i = 1; i < 9; i++) {//外循环,控制行,是一定的
for (int j = 1; j <= i; j++) {//内循环,列是不固定的,是递增的
System.out.print(i+"*"+j+"="+i*j+" ");//保证第一行打印出来一个*,注意条件
}
System.out.println();
}
}
2 break和continue
用来终止循环,可以用两种方式
2.1 形式
break: 中断当前循环,简单粗暴
for(){
代码1
if(条件){
代码3…
break;//如果成立,直接跳出这个for循环
}
代码2…
}
continue:跳出本次循环,进入下一轮
for(){
代码1
if(条件){
代码3… continue;//如果成立,跳出本次for循环,进入下一轮
}
代码2…
}
2.2 demo1:找数字88
接收用户输入的100次数字,如果不是88继续输入,找到88就返回
public class Test4_breakcontinue {
public static void main(String[] args) {
f2();
}
//找88
private static void f2() {
for(int i=1;i<=100;i++){
//一直输入…
int j = new Scanner(System.in).nextInt();
if(j!=88){
continue;//继续输入
}
if(j==88){
System.out.println("找到了88...");
break;
}
}
}
}
3 循环结构2:while
先判断,再执行
3.1 格式
while(执行条件){
代码…
}
3.2 demo1:猜数字
产生一个随机数,和用户一直在输入的数字比较。
public class Test5_猜数字 {
public static void main(String[] args) {
System.out.println("猜1~1000的随机数");
//系统产生随机数,从0开始,要从1开始就加1
int i = new Random().nextInt(1000)+1;
System.out.println(i);
while(true){
//接收用户输入的值
int sc = new Scanner(System.in).nextInt();
//判断
if(sc>i){
System.out.println("大");
}else if(sc<i){
System.out.println("小");
}else{
System.out.println("right");
break;
}
}
}
}
4 循环结构3:do-while
先执行,再判断
4.1 格式
do{
代码…
}while(执行条件);
4.1 demo1:猜数字
产生一个随机数,和用户一直在输入的数字比较。
public class Test5_猜数字 {
public static void main(String[] args) {
System.out.println("猜1~1000的随机数");
//系统产生随机数,从0开始,要从1开始就加1
int i = new Random().nextInt(1000)+1;
System.out.println(i);
while(true){
//接收用户输入的值
int sc = new Scanner(System.in).nextInt();
//判断
if(sc>i){
System.out.println("大");
}else if(sc<i){
System.out.println("小");
}else{
System.out.println("right");
break;
}
}
}
}
5 三种循环的区别
三种循环都可以互相代替
1、 for:知道循环次数
2、 while/do while:当循环次数不确定时
3、 while:先判断,不符合规则,不执行代码
4、 do while:代码最少被执行一次,再去判断,符合规则,再次执行代码
5.1 打印右直角三角形
public class a {
public static void main(String[] args) {
//输出5行
for(int i=1;i<=5;i++){
//空格三角
for(int x=5;x>i;x--){
System.out.print(" ");
}
//*号三角
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
4.6.3 打印全三角形
public class a {
public static void main(String[] args) {
//打印5行
for(int i=1;i<=5;i++){
//打印空格的倒三角
for(int j=5;j>=i;j--){
System.out.print(" ");
}
//打印*号的正三角
for(int k=1;k<=i*2-1;k++){
System.out.print("*");
}
System.out.println();
}
}
}