目录
案例:打印数据
需求:在控制台输出1至5和5至1的数据
分析:
1.使用for循环语句来输出数据1-5和5-1
for(初始化语句;条件判断语句,执行循环体语句)
2.从1开始到5结束,设置初始化从1开始,
设置判断条件为没有到5的时候继续执行,执行到5的时候结束,
从1到5每次增加1,设置条件控制每次+1
for(int a = 1; a <= 5; a++)
3.将反复执行的事情写入循环结构内部
for(int a = 1; a <= 5; a++) {
System.out.println(a);
}
从5开始到1结束,设置初始化从5开始,
设置判断条件为没有到1的时候继续执行,执行到1的时候结束,
从5到1每次减少1,设置条件控制每次-1
for(int a = 5; a >= 1; a--)
3.将反复执行的事情写入循环结构内部
for(int a = 5; a >= 5; a--) {
System.out.println(a);
代码演示:
public class ForNumber {
public static void main(String[] args) {
//使用for循环语句来输出数据1-5
for (int a = 1; a <= 5; a++) {
System.out.println(a);
}
System.out.println("----");
for (int a = 5; a >= 1; a--) {
System.out.println(a);
}
}
}
案例:求和
需求:求1至5之间的数据和,并把求和结果在控制台输出
分析:
1.求和的结果必须用一个变量保存起来,用于保存求和的结果,初始值为0
int sum = 0
2.使用for循环语句完成1-5之间的数据设定初始化语句,设置判断条件为没有到5的时候继续执行,
执行到5的时候结束,从1到5每次增加1,设置条件控制每次+1
fou(int a = 1; a <= 5; a++)
3.将反复进行过的事情写入循环结构内部,此处反复进行的事情是将数据i加到用于保存最终求和的变量sum中
fou(int a = 1; a <= 5; a++) {
sum += i
4。当循环执行完毕后,将最终数据打印出来
System.out.println(sum);
}
代码演示:
public class ForNumber1 {
public static void main(String[] args) {
int sum = 0;
/*使用for循环语句完成1-5之间的数据设定初始化语句,设置判断条件为没有到5的时候继续执行,
执行到5的时候结束,从1到5每次增加1,设置条件控制每次+1
*/
for (int a = 1; a <= 5; a++) {
sum += a;
}
/*
第一次sum:sum + a == 0 + 1 == 1;
第二次sum:sum + a == 1 + 2 == 3;
第三次sum:sum + a == 3 + 3 == 6;
第四次sum:sum + a == 6 + 4 == 10;
第五次次sum:sum + a == 10 + 5 == 15;
第一次i == 1;sum == 0 相加等于1,sum就==1
第二次i要做++运算 == 2;sum == 1,相加等于3,sum就==3
第三次i==2,再做++运算i==3;sum==3,相加等于6,sum就==6
第四次i==3,再做++运算i==4,sum==6,相加等于10,sum就==10
第五次i==4,再做++运算i==5,sum==10,相加等于15,sum就等于15
第六次i==5,再做++运算i==6,条件判断语句就判断为false,就停止运行
*/
//当循环执行完毕后,将最终数据打印出来
System.out.println(sum);//所以sum==15
//自我延伸,需求 1至999的和
/*求和的结果必须用一个变量保存起来,用于保存求和的结果,初始值为0
int number = 0
*/
int number = 0;
//使用for循环语句完成1-5之间的数据设定初始化语句,设置判断条件为没有到5的时候继续执行,
// 执行到5的时候结束,从1到5每次增加1,设置条件控制每次+1
for (int b = 1; b <= 999; b++) {
number += b;
}
//当循环执行完毕后,将最终数据打印出来
System.out.println(number);
}
}
案例:求偶数和
需求:求1-100之间的偶数和,并把求和结果在控制台输出。
分析:
1.求和的结果必须用一个变量保存起来,用于保存结果,初始值为0
int number = 0
2.使用for语句,使用for循环语句完成1-100之间的数据设定初始化语句,设置判断条件为没有到100的时候继续执行,
执行到100的时候结束,从1到100每次增加1,设置条件控制每次+1
设定初始化语句:int a = 1
设置判断条件为:a <= 100
设置条件控制为每次+1:a++
for(int a = 1; a <= 100; a++) {
}
3.要求1-100之间的偶数和,排除奇数需要镶嵌if语句来帮忙排除1-100之间的奇数
for(int a = 1; a <= 100; a++) {
if(a % 2 == 0) {
}
}
4.当循环完毕之后,并把最终结果打印出来
System.out.println(a)
代码演示:
public class ForNumber2 {
public static void main(String[] args) {
//求和的结果必须用一个变量保存起来,用于保存结果,初始值为0
int number = 0;
//设置初始化语句
int a = 1;
//使用for循环语句镶嵌if语句限制条件并把循环语句的最终结果打印出来
for (a = 1; a<=100; a++) {
//判断a是否是偶数 是偶数才让他们相加
if (a % 2 == 0) {
number += a;
}
}
//输出语句放在循环语句外面输出结果就不会得所以循环结果只会得到最终结果
System.out.println(number);
}
}
案例:水仙花数
需求:在控制台输出所有的“水仙花数”
什么是“水仙花数”?
- 水仙花数是三个数
例如:111、222、333、370、371、520、999
- 水仙花的各位是为个位、十位、百位的数字立方和等于原数
例如:
123是1³+2³+3³=1+8+27=123,就不是水仙花数
371是3³+7³+1³=27+343+1=371是水仙花数
分析:
1.三位数的个位数字如何求
371 % 10 = 1;1就是原始数字除以10取余的运算结果
2.三位数的百位数字如何求
371 / 100= 3就是原始数字除以一百的结果(整除)
3.三位数的十位数字如何求
371 / 10 % 10 = 7;就是原始数字除以时得到37,7变成个位再按照分析1获得十位数
代码演示:
public class ForDemo2 {
public static void main(String[] args) {
//设定初始化语句
int i = 100;
/*使用for循环语句完成100-999之间的数据判断,到999结束
并设置条件判断,和条件控制
写for(i = 100,i < 1000;i++)也是可以的
因为水仙花数是三位数所以起始值为100,
设定条件判断i>999之后终止循环语句
条件控制:需要遍历三位数所以使用i++依次循环判断
*/
for(i =100; i <= 999; i++) {
//求三位数的个位百位十位
int ge = i % 10;
int bai = i /100;
int shi = i / 10 % 10;
//判断条件计算个位十位百位三个数的立方是否等于i
if(ge * ge * ge + shi * shi * shi + bai * bai* bai == i) {
//如果上面个十百位数的立方相加等于i,这个i就是我们的水仙花数,并输出结果
System.out.println(i);
}
}
}
}
案例:统计水仙花数个数
需求:统计水仙花数,一共有多少个,并在控制台输出
分析:
①定义一个变量用于统计水仙花数的个数,初始值为0.
int b = 0;
②使用for循环遍历100-999获取水仙花数
③设置水仙花数的要求
④使用if语句判断,如果发现满足水仙花数要求的数就给变量b+1
⑤在控制台输出水仙花数和水仙花数的个数
public class ShuiXianHua {
public static void main(String[] args) {
//定义一个变量用于接收水仙花的个数
int b = 0;
//提示语胡
System.out.println("水仙花数分别是:");
//遍历100-999
for (int a = 100; a < 1000; a++) {
//设置水仙花数的要求
int bai = a / 100;
int shi = a / 10 % 10;
int ge = a % 10;
//满足要求的即为水仙花数
if (bai * bai * bai + shi * shi * shi + ge * ge * ge == a) {
//输出水仙花数
System.out.println(a);
//如果有一个数满足要求就给b的值加1(就可以得到水仙花数的个数)
b++;
}
}
//输出水仙花数的个数
System.out.println("水仙花数有" + b++ +"个");
}
}
案例:珠穆朗玛峰
需求:世界最高山峰是珠穆朗玛峰(8848.43米=8848430毫米),假如我有一张足够大的纸,他的厚度是0.1毫米。请问我折叠多少次,可以折成珠穆朗玛峰的高度?
分析:
1.定义一个变量用于统计纸的折叠次数,初始值为0
int a = 0
2。使用while循环语句
定义初始化语句定义纸张的厚度:double d = 0.1
设置条件判断语句厚度不超过珠峰高度超过即停止:d <= 8848430;
设置条件控制语句使循环中厚度加倍:d *= 2;
设置一个计数器,在循环中执行累加操作,对应叠加了多少次
a++;
3.打印计数器的值
代码演示:
public class Mt_EverestDemo {
public static void main(String[] args) {
//定义一个变量用于统计纸的折叠次数,初始值为0
int a = 0;
/*2。使用while循环语句
定义初始化语句:double d = 0.1
设置条件判断语句:d <=8848430
设置条件控制语句:d *= 2;
在循环中执行累加操作,对应叠加了多少次
a++
*/
double d = 0.1;
while (d <= 8848430) {
d *= 2;
a++;
}
//打印计数变量的值
System.out.println(a);
}
}
案例:猜数字
案例:猜数字
需求:程序自动生成生成一个1-100之间的随机数,使用程序实现猜出这个数字是多少?
当猜错的时候更具不同情况给出相应的提示
如:
- 如果猜的数字比真实数字大,提示你猜的数据大了
- 如果猜的数字比真实数字小,提示你猜的数据大了
- 如果猜的数字与真实数字相等,提示恭喜你猜对了
分析:
1.需要生成一个随机数需要导包
import java.util.Random;
2.需要创建对象
Random r = new Random();
3.需要产生一个随机数,并用变量保存起来
int x = r.nextInt(数字范围);
4.采用键盘录入的方式来猜随机数
创建对象
Scanner sc = new Scanner(System.in);
5.使用一个变量接收键盘录入的数据
int y = sc.nextInt();
6.因为无法预知几次能够猜中需要用while反复循环,
而while通常用于描述未知次数的循环。
while(条件) {}
7.比较输入的数字和系统产生的数据,需要使用分支语句。这里使用
if…else…if格式,根据不同情况进行猜测结果显示,当猜中后使用break结束循环
if(条件:比猜测的数字大) {
输出语句体
} else if(条件比猜测的数字小) {
输出语句体
} else {
输出语句体
break;
}
代码演示:
//1导包
import java.util.Random;
//2导包
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
/*1创建对象,注意1的创建对象和产生随机数千万不能改放在死循环里面,
否则会每次循环获得一个新的随机数可能会导致我们永远猜不中
*/
Random r = new Random();
//1生成随机数并设定范围
int x = r.nextInt(100) + 1;
//这里需要用死循环来多次猜测while需要把下面if语句括起来
while (true) {
System.out.println("请输入你要猜的数字:");
/*2使用键盘录入来接收数据,键盘录入需要放置再while循环里跟着循环,要是没猜对需要继续输入
键盘录入必须放置在创建对象下面
*/
Scanner sc = new Scanner(System.in);
int y = sc.nextInt();
/*比较输入的数字和系统产生的数据,需要使用分支语句。这里使用
if…else…if格式,根据不同情况进行猜测结果显示
*/
if (y > x) {
System.out.println("你猜的数字" + y + "大了");
} else if (y < x) {
System.out.println("你猜的数字" + y + "小了");
} else {
System.out.println("恭喜你猜对了");
//猜中后使用break结束,如果不填break结束会猜对了还会让你继续猜
break;
}
}
}
}