Java циклическая структура 07_ вложенных циклов

Затем цикл внутри цикла или вложенного множества циклов, называемых вложенных циклов. в то время как, в то время как делать-петля для многослойной структуры могут быть произвольно вложенными.

Процесс выполнения нескольких циклов: внешние изменения переменной цикла один раз переменной внутреннего цикла, чтобы изменить его снова

[ Обучение Упражнение ]

1, консоль выводит прямоугольник, параллелограмм, а затем печать, а затем печать равнобедренный треугольник.
Here Вставка рисунка Описание

/**
 * 打印矩形
 * 	 ************
 * 	 ************
 * 	 ************
 * 	 ************
 * 多重循环执行过程:外层循环变量变化一次,内层循环变量要变化一遍 。 
 */ 
// 外侧循环:控制行数
for(int i = 0; i < 4; i++) {
	// 内侧循环:控制列数
	for(int j = 0; j < 13; j++) {
		System.out.print("*");
	}
	System.out.println();
}

/**
 * 打印平行四边形
 * 	 ************
 * 	  ************
 * 	   ************
 * 		************
 * 思路:选择嵌套循环。外侧循环,用于控制打印的行数,内侧循环,分别用于控制打印空格和星星的个数
 * 行数	空格	  星星
 *  0     0      13
 *  1     1	     13
 *  2     2      13
 *  3     3      13
 *  i	  i      13
 */
// 外侧循环:控制行数
for(int i = 0; i < 6; i++) {
	// 内侧循环:控制空格
	for(int j = 0; j < i; j++) {
		System.out.print(" ");
	}
	// 内侧循环:控制星星
	for(int j = 0; j < 13; j++) {
		System.out.print("*");
	}
	System.out.println();
}

/**
 * 打印等腰三角形
 * 		 *
 *      ***
 *     *****
 *    *******
 *   *********
 * 思路: 选择嵌套循环。外侧循环控制行数,内侧循环控制空格和星星的个数!
 *  行数		  空格             星星
 *   0		 4 = 5-0-1		 1 = 2*0+1
 *   1		 3 = 5-1-1		 3 = 2*1+1
 *   2		 2 = 5-2-1		 5 = 2*2+1
 *   3		 1 = 5-3-1		 7 = 2*3+1 
 *   4		 0 = 5-4-1		 9 = 2*4+1
 *   i	     总行数-i-1         2*i+1	
 */
int length = 9;
// 外侧循环:控制行数
for(int i = 0; i < length; i++) {
	// 内侧循环:控制空格
	for(int j = 0; j < length - i - 1; j++) {
		System.out.print(" ");
	}
	// 内侧循环:控制星星
	for(int j = 0; j < 2 * i + 1; j++) {
		System.out.print("*");
	}
	System.out.println();
}

/**
 * 思考:如何实现打印菱形和空心菱形???
 * 		 *
 *      ***
 *     *****
 *    *******
 *   ********* 
 *    *******
 *     *****
 *     	***
 *     	 *
 *     
 * 		 *
 *      * *
 *     *   *
 *    *     *
 *   *       * 
 *    *     *
 *     *   *
 *     	* *
 *     	 *
 */

2, вложенный цикл, чтобы достичь таблицы умножения.
Here Вставка рисунка Описание

// 外侧循环:控制行数
for(int i = 1; i <= 9; i++) {
	// 内侧循环:控制列数
	for(int j = 1; j <= i; j++) {
		System.out.print(j + "*" + i + "=" + i*j + "\t");
	}
	System.out.println();
}

3 ** [трудно] ** Введите число от 0-9, выхода цифровой конфигурации целого числа от 1 до 5 и, в качестве входных данных 2, вычисленной 2 + 22 + 222 + 2222 + 22222 сумму.

/**
 * 实现步骤:
 *	1.获得[0, 9]之间的正整数,假设输入的正整数num=5
 *	2.获得5,55,555,5555,5555
 *	  定义一个变量result,并设置result的初始值为0
 *    	第一趟:result *= 10;  result += num;   -->  result = 5
 * 	   	第二趟:result *= 10;  result += num;   -->  result = 55
 * 		第三趟:result *= 10;  result += num;   -->  result = 555  
 * 		第四趟:result *= 10;  result += num;   -->  result = 5555
 * 		第五趟:result *= 10;  result += num;   -->  result = 55555
 * 	  因为每一趟的代码都是一模一样,所以我们使用循环来实现,循环的次数为:5次
 *  3.定义一个变量,用于累加5,55,555,5555,5555之和 
 */
// 1.获得[0, 9]之间的正整数
Scanner input = new Scanner(System.in);
System.out.print("请输入[0, 9]之间的整数:");
int num = input.nextInt();
// 2.获得5,55,555,5555,5555
int result = 0, sum = 0;
// 每一趟循环,要求分别得到:5,55,555,5555,5555
for(int i = 0; i < 5; i++) {
	result *= 10;
	result += num;
	// 3.用于累加5,55,555,5555,5555之和 
	sum += result;
}
System.out.println("sum:" + sum);

4 ** [трудно] ** движущиеся кирпичи выдают: 36 кирпичей, 36 человек движется, движущихся мужчин и четыре женщины двигаются три, двое детей двигаться, двигаться эти требования, необходимо спросить мужчин, женщин, детей сколько каждый из них?

/**
 * 思路分析:
 *	 条件:男人 + 女人 + 小孩 == 36 && 男人搬砖数量 + 女人搬砖数量 + 小孩搬砖数量 == 36
 *   我们只需列举出男人、女人和小孩的人数区间范围,然后计算机依次去判断匹配即可!
 *		男人的取值范围???[0, 9]
 * 		女人的取值范围???[0, 12]
 *		小孩的取值范围???[0, 36]
 */
// 控制男人的人数
for(int x = 0; x < 9; x++) {
	// 控制女人的人数
	for(int y = 0; y < 12; y++) {
		// 控制小该的人数
		for(int z = 0; z < 36; z += 2) {
			// 满足:男人人数 + 女人人数 + 小孩人数 === 36 && 男人搬砖数 + 女人搬砖数 + 小孩搬砖数 == 36 
			if(x + y + z == 36 && x*4 + y*3 + z/2 == 36) {
					System.out.println("男人:" + x + " 女人:" + y + " 小孩:" + z);
			}
		}
	}
}

5 ** [трудно] ** Если есть пара маленьких кроликов, от первых трех месяцев после рождения родились каждый месяц одна пара кроликов, кролики растут до третьего месяца после того, как месяц родила одной пары кроликов, Если кролик не умер, общее количество кроликов в месяц, чтобы спросить, сколько пар? (Если предположить, что до 24 месяцев)

/**
 * 思路分析:
 *		   第一月   第二月    第三月   第四月   第五月   第六月 
 *	小兔子    1	   1	    1	    2 		3 	    5  
 *	老兔子    0	   0	    1	    1  	    2	    3
 *	总兔子    1	   1	    2	    3		5	    8
 *  规律:当前月份兔子总数 = 上个月兔子总数 + 上上个月兔子总数 
 *  第一月和第二月的兔子总数都是为1对,然后第三月到第二十四月的兔子数可以通过规律来获得
 *	获取第三个月到第二十四个月之间每个月份的兔子数,应该使用循环来实现。循环的次数22次,可以从[3, 24]之间循环。
 */
// 上上个月的兔子总数
int first = 1; // 初始值为第一个月的兔子总数
// 上个月兔子总数
int second = 1; // 初始值为第二个月的兔子总数
// 通过循环,获取第三个月到第二十四个月之间的兔子总数
for(int i = 3; i <= 24; i++) { 
	// 假设此处获取的是第i月的兔子总数
	// i月兔子总数 = i-2个月兔子总数  + i-1月兔子总数 
	int result = first + second; // result = 2
	// 更新first和second的值,为获取下一个月做准备
	first = second; 
	second = result; 			
	System.out.println("第" + i + "个月兔子数:" + result);
}

6 ** [трудно] ** разработал древний китайский математик вычислил отношение длины окружности наиболее простым способом:
..... ПИ = 4 / 1-4 / + 3. 4 / 5-4 / 4 + 7. / 9-4 / 11 + 4 / 13-4 / 15 + 4/17 ... эта формула будет приводить бесконечно близко к значению пи, древний математик Цзу рассчитывается Китай, отношение длины окружности между 3,1415926 и 3.1415927, пожалуйста , запрограммированный расчет для того, чтобы получить этот результат, он сколько раз пройти через ...

/**
 * 思路分析:
 *   因为不确定需要计算多少次,所以采用死循环!假设循环变量为i,初始值为0
 *	 当计算出来的圆周率在:3.1415926到3.1415927之间,则跳出死循环
 *	 分析:PI=4/1-4/3+4/5-4/7+4/9-4/11+4/13-4/15+4/17......
 *		发现分子永远为4,分母规律为:2*i+1
 *		另外,当循环变量为偶数时,做累加操作;当循环变量为奇数时,做累减操作!
 */
// 定义一个变量,用于保存计算出来的圆周率
double PI = 0;
// 定义一个循环变量,初始值为0
int index = 0;
// 定义一个死循环,用于计算PI的取值
while(true) {
	// 计算圆周率的操作
	if(index % 2 == 0) { // 偶数
		PI += 4.0/(2*index+1);
	} else { // 奇数
		PI -= 4.0/(2*index+1);
	}
	// 循环变量累加
	index++;
	// 满足PI在3.1415926到3.1415927之间,则跳出死循环
	if(PI >= 3.1415926 && PI <= 3.1415927) {
		System.out.println(index);
		break;
	}
}

пс: Для получения последней свободной документации и обучающих видео, пожалуйста, добавьте QQ группы (627,407,545) получить.

Опубликовано 57 оригинальные статьи · вона похвала 0 · Просмотров 2046

рекомендация

отblog.csdn.net/zhoujunfeng121/article/details/104642852