吐槽O(∩_∩)O:由于前几天电脑坏了,除了在弄电脑的同时又在练习科目三了,又是晒了三天网鱼都没打了。计划还是赶不上变化,真的是让人乱了节拍啊。咔!吐槽完毕,让我们的循环练习继续。
练习一:一个人很倒霉,不小心打碎了一位妇女的一篮子鸡蛋。为了赔偿便询问篮子里有多少鸡蛋。那妇女说,她也不清楚,只记得每次拿两个则剩一个,每次拿3个则剩2个,每次拿5个则剩4个,若每个鸡蛋1元,请你帮忙编程,计算最少应赔多少钱? 要求:用循环语句实现,直接打印出结果不给分。
package com.cdp.project; public class task1 { public static void main(String[] args) { // TODO Auto-generated method stub // 使用穷举法去一一尝试,看能不能满足条件 boolean flag = true; // 初始化鸡蛋个数 int n = 1; // 满足条件就借宿循环flag=false; while (flag){ if (n % 2 == 1 & n % 3 == 2 && n % 5 == 4) { flag = false; } // 改变n的值 n++; n++; } System.out.println("应赔" + (n - 1) + "块钱"); } /**方法二: * int n = 1; * while (true) { * if (n % 2 == 1 & n % 3 == 2 && n % 5 == 4) { * break; * } * n++; * } System.out.println("应赔" + n + "块钱"); */ }
run:
应赔29块钱
练习二:
从键盘接收一个整数N,统计出1~N之间能被7整除的整数的个数,以及这些能被7整除的数的和。
屏幕提示样例: 请输入一个整数:20
1~20之间能被7整除的数的个数:2
1~20之间能被7整除的所有数之和:21
要求:整数N由键盘输入,且2 ≤ N ≤1000。
package com.cdp.project; import java.util.Scanner; public class task3 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner s = new Scanner(System.in); System.out.println("请输入一个正整数:"); int n = s.nextInt(); // 计算个数 int count = 0; // 求和 int sum = 0; for (int i = 0; i <= n; i++) { if (i % 7 == 0) { count++; sum = sum + i; } } System.out.println("1~20之间能被7整除的数的个数:" + count); System.out.println("1~20之间能被7整除的所有数之和:" + sum); } }
例如,我们就输入18运行所得结果为:
请输入一个正整数: 18 1~20之间能被7整除的数的个数:3 1~20之间能被7整除的所有数之和:21
练习3:打印菱形,这个我们都不陌生。
下面,我们从键盘输入一个整数N,打印出有N*2-1行的菱形。
package com.cdp.project; import java.util.Scanner; public class task4 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner s = new Scanner(System.in); System.out.println("请输入一个正整数N来打印菱形:"); int N = s.nextInt(); for (int i = 1; i <= N; i++) { // 第一行 // 输出空格 for (int j = 1; j <= N - i; j++) { System.out.print(" "); } // 输出星号 for (int j = 1; j <= 2 * i - 1; j++) { System.out.print("*"); } // 换行 System.out.println(); } // 打印倒行 // 倒三角形开始时为最大值N-i for (int i = N - 1; i >= 1; i--) { // 输出空格 for (int j = 1; j <= N - i; j++) { System.out.print(" "); } // 输出星号 for (int j = 1; j <= 2 * i - 1; j++) { System.out.print("*"); } // 换行 System.out.println(); } } }
eg:我们就输入个20来看看效果:
请输入一个正整数N来打印菱形: 20 * *** ***** ******* ********* *********** ************* *************** ***************** ******************* ********************* *********************** ************************* *************************** ***************************** ******************************* ********************************* *********************************** ************************************* *************************************** ************************************* *********************************** ********************************* ******************************* ***************************** *************************** ************************* *********************** ********************* ******************* ***************** *************** ************* *********** ********* ******* ***** *** *