学习目标
能够使用for循环完成一个范围的数据求和(用于已知循环次数)
for(int i=0; i<次数; i++){}
for(int i=1; i<=次数; i++){}
能够使用while循环完成珠穆朗玛峰案例(用于未知循环次数)
while (zhi<=shanFeng){
//4.在循环中,每循环一次 纸的厚度*2 统计变量++
zhi*=2;
count++;
}
while(true){} 死循环
能够知道三种循环的区别
1.for循环和while循环: 先执行循环判断语句, 后执行循环体语句
2.do...while循环: 先执行循环体语句, 后执行循环判断语句
3.for循环: 初始化变量定义在循环内部, 循环结束后变量不能再使用
4.while循环和 do..while循环:初始化变量定义在循环外部,循环结束变量还可以使用
能够知道循环嵌套的执行流程
格式:
for(int i=1; i<=10; i++){ //外层循环
for(int j=1; j<=10; j++){}//内层循环
}
执行规则:
外层循环执行一次,内层循环执行一圈
总共的执行次数:外层循环次数*内层循环次数 10*10=100次
能够知道break和continue的作用
break:结束(跳出)单层循环
continue:结束(跳出)本次循环,继续下一次循环
能够完成猜数字小游戏程序
1.使用Random获取一个1-100之间的随机数字
2.使用Scanner获取用户猜的数字
3.比较随机的数字和用户猜的数字
用户猜的数字>随机的数字:提示"您猜大了,请往小了猜!"
用户猜的数字<随机的数字:提示"您猜小了,请往大了猜!"
用户猜的数字==随机的数字:提示"恭喜您,猜对了!"
结束游戏
4.使用死循环,重复执行2-3
第一章:循环语句结构
1.for循环
1.1 for循环基本使用
package com.itheima.demo05for;
/*
循环作用:让某一段代码重复的执行
for循环:用于已知循环次数
次数:10 100 1000 10000
需求: 输出10次相同的语句
*/
public class Demo01For {
public static void main(String[] args) {
//不使用for循环,输出10次相同的语句
System.out.println("卡地亚黄金项链,你值得拥有");
System.out.println("卡地亚黄金项链,你值得拥有");
System.out.println("卡地亚黄金项链,你值得拥有");
System.out.println("卡地亚黄金项链,你值得拥有");
System.out.println("卡地亚黄金项链,你值得拥有");
System.out.println("卡地亚黄金项链,你值得拥有");
System.out.println("卡地亚黄金项链,你值得拥有");
System.out.println("卡地亚黄金项链,你值得拥有");
System.out.println("卡地亚黄金项链,你值得拥有");
System.out.println("卡地亚黄金项链,你值得拥有");
System.out.println("---------------------------------------------");
//使用for循环,输出10次相同的语句
for(int i=1; i<=10; i++){
/*
执行流程:
int i=1 1<=10 true 执行循环体:sout("卡地亚..."); i++=2
i=2 2<=10 true 执行循环体:sout("卡地亚..."); i++=3
i=3 3<=10 true 执行循环体:sout("卡地亚..."); i++=4
...
i=10 10<=10 true 执行循环体:sout("卡地亚..."); i++=11
i=11 11<=10 false 结束for循环
*/
System.out.println("卡地亚黄金项链,你值得拥有");
}
}
}
1.2 使用for循环打印输出1-5和5-1
package com.itheima.demo05for;
/*
需求: 使用for循环输出1-5, 输出5-1
思考:
怎么获取1-5 或者5-1
注意:
变量的作用域,在变量所在的大括号{ }范围内有效
出了变量的作用域,变量就消失了
*/
public class Demo02ForTest {
public static void main(String[] args) {
//使用for循环输出1-5
for(int i=1; i<=5; i++){
System.out.println(i);
}
System.out.println("---------------");
//使用for循环输出5-1
for(int a=5; a>=1; a--){
System.out.println(a);
}
}
}
1.3 使用for循环求1-5之间的和
package com.itheima.demo05for;
/*
需求: 求1-5之间的数据和,并把求和结果在控制台输出
分析:
获取1-5之间的数字,使用for循环 1,2,3,4,5
定义一个变量 int sum = 0;
累加求和: sum = sum+i;
*/
public class Demo03ForTest {
public static void main(String[] args) {
//定义一个初始化变量,值为0,记录累加求和
int sum = 0;
//获取1-5之间的数字,使用for循环
for(int i=1; i<=5; i++){
//累加求和
//sum = sum +i;
sum+=i;
/*
int i=1; 1<=5; true sum = 0 +1;=1 i++=2
i=2; 2<=5; true sum = 1 +2;=3 i++=3
i=3; 3<=5; true sum = 3 +3;=6 i++=4
i=4; 4<=5; true sum = 6 +4;=10 i++=5
i=5; 5<=5; true sum = 10 +5;=15 i++=6
i=6; 6<=5; false 直接for循环
*/
}
//打印结果
System.out.println("1-5之间的数据和为:"+sum);
}
}
1.4 判断奇偶数案例
需求:写一个程序判断并输出0~10之间的每个整数是奇数还是偶数
package com.itheima.demo05for;
/*
需求:写一个程序判断并输出0~10之间的每个整数是奇数还是偶数
① for循环从0开始,到10结束
for(int i=0; i<=10; i++)
② 用数字对2取余,判断结果是0还是1
③ 如果是1表示是奇数
i % 2 == 1
④ 如果是0表示是偶数
i % 2 == 0
*/
public class Demo04ForTest {
public static void main(String[] args) {
//使用for循环获取0-10之间的数字
for (int i=0; i<=10; i++){
//判断i是奇数还是偶数
if(i%2==0){
//是偶数
System.out.println(i+"是偶数!");
}else{
//是奇数
System.out.println(i+"是奇数!");
}
}
}
}
2.while循环
2.1 while循环基本使用
需求:使用while循环,打印10次HelloWorld
package com.itheima.demo06while;
/*
while循环的作用:让代码重复的执行
需求:使用while循环,打印10次HelloWorld
*/
public class Demo01While {
public static void main(String[] args) {
int i = 1;
while (i<=10){
System.out.println("HelloWorld"+i);
i++;
}
}
}
2.2 while循环计算1-100之间的和
package com.itheima.demo06while;
/*
需求:使用while循环求1-100之间的和,并输出结果
分析:
1.定义一个初始化变量,值为0,记录累加求和
2.使用while循环获取1-100之间的数字
3.累加求和
4.输出结果
*/
public class Demo02While {
public static void main(String[] args) {
//1.定义一个初始化变量,值为0,记录累加求和
int sum = 0;
//2.使用while循环获取1-100之间的数字
int i = 1;
while (i<=100){
//3.累加求和
sum+=i;
i++;
}
//4.输出结果
System.out.println(sum);
}
}
2.3 珠穆朗玛峰案例
需求:一张纸的厚度是0.0001米,珠穆朗玛峰的高度是8848米,在理论情况下,
一张纸折叠多少次能超过珠穆朗玛峰的高度?
package com.itheima.demo06while;
/*
练习:珠穆朗玛峰案例
需求:一张纸的厚度是0.0001米,珠穆朗玛峰的高度是8848米,在理论情况下,
一张纸折叠多少次能超过珠穆朗玛峰的高度?
分析:
1.定义两个变量,一个记录纸的厚度,一个记录山峰的高度
2.定义一个变量,初始值为0,记录折叠的次数
3.使用while循环,进行重复的折叠动作, zhi<=shanFeng(循环)
4.在循环中zhi的厚度*2,折叠次数++
5.打印结果
实际工作中:
for循环:用于已知循环次数 for(int i=1; i<=10; i++)
while循环:用于未知循环次数 while (zhi<=shanFeng)
*/
public class Demo03WhileTest {
public static void main(String[] args) {
//1.定义两个变量,一个记录纸的厚度,一个记录山峰的高度
double zhi = 0.0001;
int shanFeng = 8848;
//2.定义一个变量,初始值为0,记录折叠的次数
int count = 0;
//3.使用while循环,进行重复的折叠动作, zhi<=shanFeng(循环)
while (zhi<=shanFeng){
//4.在循环中zhi的厚度*2,折叠次数++
zhi *=2;//zhi=zhi*2;
count++;
System.out.println("第"+count+"次折叠完纸的厚度为:"+zhi);
}
//5.打印结果
System.out.println("最终折叠的次数为:"+count);
}
}
2.4 练习:使用while循环打印1-1000之间可以被3整除的数
package com.itheima.demo06while;
/*
练习:使用while循环打印1-1000之间可以被3整除的数
i%3==0 能被3整除
i%4==0 能被4整除
i%5==0 能被5整除
...
*/
public class Demo04WhileTest {
public static void main(String[] args) {
int i=1;
while (i<=1000){
//判断i能否被3整除
if(i%3==0){
System.out.println(i);
}
i++;
}
}
}
3.do while循环
3.1 do while循环基本使用
package com.itheima.demo07dowhile;
/*
do..while循环作用:让代码可以重复执行
特点:至少执行一次
先执行一次循环体,在进行条件判断
*/
public class Demo01DoWhile {
public static void main(String[] args) {
//使用do...while循环打印10次HelloWorld
int i = 1;
do{
System.out.println("HelloWorld"+i);
i++;
}while (i<=10);
}
}
3.2 使用do while循环输出1-10的数字
package com.itheima.demo07dowhile;
/*
需求:使用do..while循环输出1-10的数字
*/
public class Demo02DoWhileTest {
public static void main(String[] args) {
int i=1;
do{
System.out.println(i);
i++;
}while (i<=10);
System.out.println("--------------------");
//计算1-100之间的和
int sum = 0;
int a = 1;
do {
sum+=a;
a++;
}while (a<=100);
System.out.println("sum:"+sum);
}
}
4.三种循环的区别
package com.itheima.demo08loop;
/*
三种循环的区别:
1.for循环 while循环 和 do..while循环的区别
for循环和while循环: 先执行循环判断语句, 后执行循环体语句
do...while循环: 先执行循环体语句, 后执行循环判断语句
for循环 和 while循环 和 do..while循环 的区别
for循环: 初始化变量定义在循环内部, 循环结束后变量不能再使用
while循环和 do..while循环:初始化变量定义在循环外部,循环结束变量还可以使用
使用场合
for循环: 适用于明确次数的场合
while循环: 适用于不明确循环次数的场合
do..while循环: 一般没有使用场合
*/
public class Demo01Loop {
public static void main(String[] args) {
//for循环和while循环: 先执行循环判断语句, 后执行循环体语句
for(int i=0 ; i<0 ;i++){
System.out.println(i);
}
/*
int i=0;
for(; i<0 ;){
System.out.println(i);
i++;
}
*/
System.out.println("---------------------------");
int j=0;
while (j<0){
System.out.println(j);
j++;
}
System.out.println("---------------------------");
//do...while循环: 先执行循环体语句, 后执行循环判断语句
int z=0;
do{
System.out.println(z);
z++;
}while (z<0);
System.out.println("---------------------------");
//for循环: 初始化变量定义在循环内部, 循环结束后变量不能再使用
//System.out.println(i);//Cannot resolve symbol 'i'
System.out.println(j);
System.out.println(z);
}
}
5.死循环
package com.itheima.demo08loop;
/*
死循环:就是无限循环
*/
public class Demo02DieLoop {
public static void main(String[] args) {
//while循环的死循环(常用)
/*while (true){
System.out.println("键盘敲烂,月薪过万!");
}*/
//for循环的死循环:在工作中几乎不用,看java的底层源码,可以看到
for(;;){
System.out.println("我想有一个女朋友!");
}
}
}
第二章:跳转控制语句
1.break关键字
package com.itheima.demo09breakAndContinue;
/*
break关键字的作用:
1.结束switch语句
2.跳出(结束)单层循环
注意:
break关键字必须写在switch语句或者循环中
*/
public class Demo01Break {
public static void main(String[] args) {
//break;//Break outside switch or loop
//需求:打印10次我想有一个女同桌
for (int i = 1; i <= 10; i++) {
//需求:感觉重要的事情说3遍就够了,只打印三次
System.out.println("我想有一个女同桌:"+i);
if(i==3){
break;//跳出循环
}
}
}
}
2.continue关键字
package com.itheima.demo09breakAndContinue;
/*
continue关键字:
跳出本次循环,继续下一次循环
注意:
continue关键字只能使用在循环中
*/
public class Demo02Continue {
public static void main(String[] args) {
//continue;//Continue outside of loop
//需求:打印10层楼房的层数
for (int i = 1; i <= 10; i++) {
//需求:感觉4数字不吉利,不打印4,跳过4层
if(i==4){
continue;//跳出本次循环,继续下一次循环
}
System.out.println("第"+i+"层");
}
}
}
package com.itheima.demo09breakAndContinue;
public class Demo03Countinue {
public static void main(String[] args) {
//需求:打印1-100之间的奇数
for(int i=1; i<=100; i++){
/*if(i%2==1){//i%2==1 奇数 i%2!=0
System.out.println(i);
}*/
//判断i是偶数,跳出本次循环
if(i%2==0){
continue;
}
System.out.println(i);
}
}
}
第三章:循环嵌套
package com.itheima.demo10looploop;
/*
循环嵌套
在工作中:三种循环都可以相互嵌套使用
使用最多的就是for循环嵌套for循环
格式:
for(int i=1; i<=10; i++){//外层循环
for(int j=1; j<=10; j++){//内层循环
...
}
}
执行次数: 外层循环次数*内层循环次数 10*10
外层循环执行1次,内层循环执行一圈 i=1 j=1 j<=10
需求:
每天有24小时,每个小时有60分钟,打印从0时0分到23时59分
0时0分
0时1分
0时2分
0时3分
0时4分
0时5分
...
23时59分
分析:
使用循环嵌套
外层循环打印每天0-23小时
内层循环打印每小时0-59分
*/
public class Demo01LoopLoop {
public static void main(String[] args) {
//使用循环嵌套
for (int i = 0; i < 24; i++) {//外层循环打印每天0-23小时
for (int j = 0; j <60 ; j++) {//内层循环打印每小时0-59分
System.out.println(i+"时"+j+"分");
}
}
}
}
第四章:Random随机数
1.基本使用
package com.itheima.demo11Random;
//1.导包:找到要使用Random类(java提供)
import java.util.Random;
/*
Random随机数:是引用数据类型的一种,可以帮助我们获取随机数
使用步骤:
1.导包:找到要使用Random类(java提供)
import java.uitl.Random;
2.创建对象,为Random类型变量赋值
数据类型 变量名 = 对象;==>定义变量
Random r = new Random();
3.通过变量名.方法名(),调用Random类中的方法
int i = r.nextInt(int maxValue); 获取0到maxValue之间的一个随机数,包含0,不包含maxValue [0,maxValue)
int i = r.nextInt(10); 获取0到10之间的一个随机数,包含0,不包含10 [0,10)
*/
public class Demo01Random {
public static void main(String[] args) {
//2.创建对象,为Random类型变量赋值
Random r = new Random();
//3.通过变量名.方法名(),调用Random类中的方法
//产生10个随机数
for (int i = 0; i < 10; i++) {
int a = r.nextInt(10);//[0-9]
System.out.println(a);
}
}
}
2.生成一个1-100之间的随机数
package com.itheima.demo11Random;
import java.util.Random;
/*
需求:生成一个1-100之间的随机数
int a = r.nextInt(100);//[0-99]
int a = r.nextInt(101);//[0-100] 错误
int a = r.nextInt(100)+1;//[0-99]+1==>[1-100]
*/
public class Demo02Random {
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 10; i++) {
int ran = r.nextInt(100)+1;
System.out.println(ran);
}
}
}
综合案例
1.统计一个月内考勤情况
公司每个月底都要对出勤情况进行统计,根据出勤情况发工资
具体的需求如下:
1.定义一个变量统计上班的次数
2.使用for循环1-30的数字
3.在for循环中使用Scanner获取1或者0
1表示有上班,0表示休假或旷工
4.使用if语句判断输入的是1还是0
5.如果输入的是1则把统计变量++
6.最终打印一个月出勤了几天
格式: 本月共出勤xx天!
package com.itheima.demo12Test;
import java.util.Scanner;
/*
综合案例_统计一个月内考勤情况
需求:公司每个月底都要对出勤情况进行统计,根据出勤情况发工资
具体如下:
1.定义一个变量统计上班的次数
2.使用for循环1-30的数字
3.在for循环中使用Scanner获取1或者0
1表示有上班,0表示休假或旷工
4.使用if语句判断输入的是1还是0
5.如果输入的是1则把统计变量++
6.最终打印一个月出勤了几天
结果: 本月共出勤xx天!
*/
public class Demo01Test {
public static void main(String[] args) {
//1.定义一个变量统计上班的次数
int count = 0;
//2.使用for循环1-30的数字
System.out.println("请输入1或者0:(1表示有上班,0表示休假或旷工)");
for (int i = 1; i <=7 ; i++) {
//3.在for循环中使用Scanner获取1或者0
Scanner sc = new Scanner(System.in);
System.out.println("请输入第"+i+"天上班情况:");
//1表示有上班,0表示休假或旷工
int a = sc.nextInt();
//对a进行判断,不是1也不是0,提示输入有误,再次重新输入
if(a!=1&&a!=0){
System.out.println("您输入的有误,请重新输入!");
i--;//把本次输入错误的次数减去
continue;//结束本次循环,继续下一次循环
}
//4.使用if语句判断输入的是1还是0
if(a==1){
//5.如果输入的是1则把统计变量++
count++;
}
}
//6.最终打印一个月出勤了几天
//结果: 本月共出勤xx天!
System.out.println("本月共出勤"+count+"天");
}
}
2.猜数字小游戏
程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少?
根据不同情况给出相应的提示
如果猜的数字比真实数字大,提示你猜的数据大了
如果猜的数字比真实数字小,提示你猜的数据小了
如果猜的数字与真实数字相等,提示恭喜你猜中了
package com.itheima.demo12Test;
import java.util.Random;
import java.util.Scanner;
/*
综合案例_猜数字小游戏
需求:
程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少?
根据不同情况给出相应的提示
如果猜的数字比真实数字大,提示你猜的数据大了
如果猜的数字比真实数字小,提示你猜的数据小了
如果猜的数字与真实数字相等,提示恭喜你猜中了
分析:
1.使用Random随机产生一个1-100之间的数字
2.使用Scanenr获取用户输入的数字
3.使用用户猜的数字和随机数比较
猜的数字>随机数
提示用户"您猜大了,请往小了猜!"
猜的数字<随机数
提示用户"您猜小了,请往大了猜!"
猜的数字==随机数
提示用户"恭喜您,猜对了!"
4.定义一个死循环,循环2-3步
*/
public class Demo02Test {
public static void main(String[] args) {
//1.使用Random随机产生一个1-100之间的数字
Random r = new Random();
int randomNumber = r.nextInt(100)+1;
System.out.println("1-100之间的随机数字已经产生,请开始猜数字小游戏!");
//System.out.println("随机数:"+randomNumber);
//4.定义一个死循环,循环2-3步
while (true){
//2.使用Scanenr获取用户输入的数字
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要猜的数字:");
int guessNumber = sc.nextInt();
//3.使用用户猜的数字和随机数比较
if(guessNumber>randomNumber){
//猜的数字>随机数
//提示用户"您猜大了,请往小了猜!"
System.out.println("您猜大了,请往小了猜!");
}else if(guessNumber<randomNumber){
//猜的数字<随机数
//提示用户"您猜小了,请往大了猜!"
System.out.println("您猜小了,请往大了猜!");
}else{
//猜的数字==随机数
//提示用户"恭喜您,猜对了!"
System.out.println("恭喜您,猜对了!");
//结束循环
break;
}
}
}
}
3.随机打印成语
需求:
随机产生1~7的一个数字,输出每个数字对应的成语.
如下:
1:一帆风顺
2:二话不说
3:三心二意
4:四面楚歌
5:五湖四海
6:六亲不认
7:七上八下
package com.itheima.demo12Test;
import java.util.Random;
/*
综合案例_随机打印成语
需求:
随机产生1~7的一个数字,输出每个数字对应的成语.
如下:
1:一帆风顺
2:二话不说
3:三心二意
4:四面楚歌
5:五湖四海
6:六亲不认
7:七上八下
提示:让用户只能产生5次数字
分析:
1.使用Random产生1-7之间的一个随机数字
2.使用switch语句,根据产生的随机数字,输出对应的成语
3.使用for循环,让程序执行5次
*/
public class Demo03Test {
public static void main(String[] args) {
//3.使用for循环,让程序执行5次
for (int i = 1; i <= 5; i++) {
//1.使用Random产生1-7之间的一个随机数字
Random r = new Random();
int a = r.nextInt(7)+1;
System.out.println("随机数:"+a);
//2.使用switch语句,根据产生的随机数字,输出对应的成语
switch (a){
case 1:
System.out.println("一帆风顺");
break;
case 2:
System.out.println("二话不说");
break;
case 3:
System.out.println("三心二意");
break;
case 4:
System.out.println("四面楚歌");
break;
case 5:
System.out.println("五湖四海");
break;
case 6:
System.out.println("六亲不认");
break;
case 7:
System.out.println("七上八下");
break;
default:
System.out.println("哈哈!");
}
}
}
}