9.23-嵌套循环与方法

嵌套循环的使用

语法格式

for(初值;循环条件;迭代语句){//外层for循环
    for(初值;循环条件;迭代语句){//内层for循环
    	循环体;
	}
}

特点

外层循环执行一次,内层循环要完整执行一周(圈)

例子一

package day9_23;

public class ForForDemo01 {
	public static void main(String[] args) {
	for (int i =1;i<=5;i++) {
		for(int j=1;j<=5;j++) {
			System.out.print(j);//输出1、2、3、4、5
		}
		System.out.println();//换行
	}
}
}

例子二

package day9_23;

public class ForForDemo02 {
	/**
	 * 需求一
	 * 在控制台打印无行五列的星星图案(*)
	 * 	*****
	 * 	*****
	 * 	*****
	 * 	*****
	 * 	*****
	 * 
	 * 需求二
	 * 在控制台打印一个星星图案
	 * 	*
	 * 	**
	 * 	***
	 * 	****
	 * 	*****
	 * 需求三
	 *在控制台打印一个星星图案
	 * 	*****
	 * 	****
	 * 	***
	 * 	**
	 * 	*
	 */
	public static void main(String[] args) {
		//外层循环表示行数
		for (int i=1;i<=5;i++) {
			//内层循环表示列数
			for (int j=1;j<=5;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println("-------------------");
		//外层循环表示行数
		for (int i=1;i<=5;i++) {
			//内层循环表示列数
			for (int j=1;j<=i;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		System.out.println("--------------------");
		//外层循环表示行数
		for (int i=5;i>=1;i--) {
			//内层循环表示列数
			for (int j=1;j<=i;j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

例子三

package day9_23;

public class ForForDemo03 {
	/**
	 * 打印乘法口诀表
	 * 1*1=1
	 * 1*2=2 2*2=4
	 * 1*3=3 2*3=6 3*3=9
	 * ...
	 * 1*9=9 2*9=18 ... 9*9=81
	 */
	public static void main(String[] args) {
		for (int i=1;i<=9;i++) {
			for(int j=1;j<=i;j++) {
				System.out.print(j+"*"+i+"="+j*i+"\t");
			}
			System.out.println();
		}
	}
}

例子四:百钱百鸡

公鸡5元/只 母鸡3元/只 小鸡1元三只

TIPS:穷举法(枚举法)

公鸡数(0,20) 母鸡数(0,33) 小鸡(100-公-母) 总价格

package day9_23;

public class ForForDemo04 {
	//百钱百鸡
	public static void main(String[] args) {
		//外层循环列举公鸡数
		for(int g=0;g<=20;g++) {
			//内层循环列举母鸡数
			for(int m=0;m<=33;m++) {
				//计算小鸡数
				int x=100-g-m;
				//判断条件,符合则输出答案
				if (5*g+3*m+x/3==100&&x%3==0) {
				System.out.println("公鸡:"+g+" 母鸡:"+m+" 小鸡:"+x);
				}
			}
		}
	}
}

方法(函数)

方法指的是定义在类中,具有特定功能的一段独立的小程序,方法也可以称为函数。

格式

修饰符 返回值类型 方法名 (参数类型 参数名1,参数类型 参数名2, ...){
    方法体语句;
    return 返回值;
}

修饰符

在语法基础阶段,仅使用publicstatic,且修饰符并不是必须存在的。

返回值类型

方法功能结果的数据类型。

如果方法没有返回值,则类型使用void来进行替代

方法名

自定义,符合命名规则即可。

参数

实际参数

实际参与运算的参数

形式参数

方法定义上的参数,用于接收实参的

参数类型

就是参数的数据类型

参数名

就是变量名

方法体语句

实现功能的代码

返回值

方法的功能结果

return

  1. 结束方法

  2. 将方法的返回值由return带给调用者

好处

提高代码复用性

控制语句

break

作用

中止,打断选择/循环

应用范围

选择结构(switch)和循环结构内

例子

package day9_23;
public class BreakDemo01 {
	public static void main(String[] args) {
		for(int i=0;i<=9;i++) {
			System.out.println(i);
			if(i==7) {
                //一旦执行到break,break所在的当前循环会被直接结束
				break;
			}
		}
	}
}

continue

作用

结束当前循环,并继续执行下一次循环

应用范围

循环结构

例子

package day9_23;

public class ContinueDemo01 {
	public static void main(String[] args) {
		for(int i=0;i<10;i++) {
			if (i==4) {//如果i等于4,跳过循环 ,执行下一个循环
				continue;
                //一旦执行到cotinue,当次循环直接结束,continue下的代码将不再执行;开始下一次循环
			}
			System.out.print(i+" ");
		}
	}
}

return

结束方法

注意

  • break与continue离开应用范围时,其存在无任何原因

  • break与continue单独存在时下面不可以有任何其他语句,因为执行不到

死循环

语法格式一

for (;true;){//此处的true也可以省略
    
}

语法格式二

while(true){//此处的true必须存在,不可省略
    
}

例子一

package day9_23;

import java.util.Random;

public class DeadLoopDemo {
	/**
	 * 需求:
	 * 在控制台打印两个随机正整数
	 * 要求这两个整数的平方和等于50
	 */
	public static void main(String[] args) {
		int sum=0;
		int num=0;
		int num2=0;
		while(true) {//死循环生成随机数
		Random rd = new Random();
		num=rd.nextInt(10);
		num2=rd.nextInt(10);	
		sum=num*num+num2*num2;//生成后计算平方加值
		if(sum==50) {//判断是否符合条件,符合则退出循环
			break;
		}
		} 
		System.out.println(num+"与"+num2);
	
	}
}

例子二

package day9_23;

import java.util.Random;
import java.util.Scanner;

import javax.swing.plaf.synth.SynthSeparatorUI;

public class GuessNum {
		/**
		 * 猜数字
		 * 数据分析
		 * num 被猜测数字,随机生成,范围1~100
		 * answer 用户输入猜测答案 
		 * count 统计猜测次数
		 */
	public static void main(String[] args) {
		Random rd = new Random();
		int num = rd.nextInt(100)+1;//[0~99]+1
		System.out.println("请输入一个100以内的整数猜测:");
		Scanner sc = new Scanner(System.in);
//		int answer = sc.nextInt();
		int count = 0;
		while(true) {
			int answer = sc.nextInt();
			count++;
			if (num>answer) {
				System.out.println("猜小了哦,请重猜:");
			}
			if(num<answer) {
				System.out.println("猜大了哦,请重猜:");
			}
			if (num==answer) {
				System.out.println("恭喜你猜对了,你猜了"+count+"次");
				break;
			}
		}
		sc.close();
	}
}

最后更新于