重复做某件事
具有明确的开始和停止标志
初始化语句:用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样
条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去
循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情
条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环能否执行下去
初始化语句:这里可以是一条或者多条语句,这些语句可以完成一些初始化操作
条件判断语句:这里使用一个结果值为boolean类型的表达式,这个表达式能决定是否执行循环体。例如:a>10
循环体语句:这里可以是任意语句,这些语句将反复执行
条件控制语句:这里通常是使用一条语句来改变变量的值,从而达到控制循环是否继续向下执行的效果。常见i++等这样的操作
for (初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
①执行初始化语句
②执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
/*
for语句
*/
public class ForDemo{
public static void main(String[] args){
//需求:在控制台输出5次"麦仓分享”
System.out.println("麦仓分享");
System.out.println("麦仓分享");
System.out.println("麦仓分享");
System.out.println("麦仓分享");
System.out.println("麦仓分享");
System.out.println("---------------");
//用循环体改进
for(int i = 1;i <= 5; i++){
System.out.println("麦仓分享");
}
}
}
/*
输出数据
需求:
在控制台输出1-5和5-1
*/
public class ForDemo{
public static void main(String[] args){
//需求:输出1-5
for(int i = 1; i <= 5; i++){
System.out.println(i);
}
System.out.println("----------------------");
//需求:输出5-1
for(int i = 5; i >= 1; i--){
System.out.println(i);
}
}
}
/*
输出数据
需求:
求1-5之间的数据和,并把求和结果在控制台输出
*/
public class ForDemo{
public static void main(String[] args){
int sum = 0;
for(int i = 1; i <= 5; i++){
sum += i;
}
System.out.println("求1-5之间的数据和:" + sum);
}
}
/*
输出数据
需求:
求1-100之间的偶数和,并把求和结果在控制台输出
*/
public class ForDemo{
public static void main(String[] args){
int sum = 0;
for(int i = 1; i <= 100; i++){
if(i%2 == 0){
sum += i;
}
}
System.out.println("求1-100之间的偶数和:" + sum);
}
}
什么是“水仙花数”?
①水仙花数是一个三位数
②水仙花数的个位、十位、百位的数字立方和等于原数
/*
输出数据
需求:
在控制台输出所有的“水仙花数”
*/
public class ForDemo{
public static void main(String[] args){
for(int i = 100; i <= 999; i++){
int ge = i %10;
int shi = i / 10 % 10;
int bai = i / 10 / 10 %10;
//N位数中第m个的值:i/(10^m)%10
if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i){
System.out.println(i);
}
}
}
}
/*
输出数据
需求:
统计“水仙花”一共有多少个,并在控制台输出个数。
*/
public class ForDemo{
public static void main(String[] args){
int count = 0;
for(int i = 100; i < 1000; i++){
int ge = i %10;
int shi = i / 10 % 10;
int bai = i / 10 / 10 % 10;
if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i){
count ++;
}
}
System.out.println("“水仙花”一共有" + count + "个");
}
}
基本格式:
while(条件判断语句){
循环体语句;
}
完整格式:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
①执行初始化语句
②执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
/*
输出数据
需求:
在控制台输出5次“麦仓分享”
*/
public class WhileDemo{
public static void main(String[] args){
//for循环实现
for(int i = 0;i < 5;i++){
System.out.println("“麦仓分享");
}
System.out.println("---------------------");
//while循环实现
int i = 0;
while(i < 5){
System.out.println("“麦仓分享");
i++;
}
}
}
/*
输出数据
需求:
世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米,
请问,我折叠多少次,可以折成珠穆朗玛峰的高度?
*/
public class WhileDemo{
public static void main(String[] args){
double paper = 0.1;
int count = 0;
while(paper <= 8844430){
paper *=2;
count++;
}
System.out.println("需要折叠:" + count + "次");
}
}
基本格式:
do{
循环体语句;
}while(条件判断语句);
完整格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
①执行初始化语句
②执行循环体语句
③执行条件控制语句
④执行条件判断语句,看其结果是true,还是false
如果是false,循环结束
如果是true,继续执行
⑤回到②继续
/*
输出数据
需求:
在控制台输出5次“麦仓分享”
*/
public class DoWhileDemo{
public static void main(String[] args){
int i = 1;
do{
System.out.println("麦仓分享");
i++;
}while(i <= 5);
}
}
for(;;){}
while(true){}
do{}while(true);
while的死循环格式是最常用的
命令提示符窗口中Ctrl + C 可以结束死循环
终止循环体内容的执行
break
注意:使用是基于条件控制的
/*
continue 和 break 用法
*/
public class ControlDemo{
public static void main(String[] args){
for(int i = 1;i <= 5;i++){
if( i % 2 == 0){
//continue;
break;
}
System.out.println(i);
}
}
}
任何语句对外都可以看成是一句话,一句代码
分支语句中包含分支语句称为分支嵌套
循环语句中包含循环语句称为循环嵌套
/*
循环嵌套:
循环语句中包含循环语句
需求:
在控制台输出一天的小时和分钟
分钟和小时的范围:
分钟:0 <= minute < 60
小时:0 <= hour <24
*/
public class ForForDemo{
public static void main(String[] args){
//外循环控制小时
for(int hour = 0;hour < 24;hour++){
//内循环控制分钟
for(int minute = 0;minute <60;minute++){
System.out.println(hour + "时" + minute + "秒");
}
System.out.println("-----------------------");
}
}
}
用于产生一个随机数
①导包
import java.util.Random;
导包的动作必须出现在类定义的上面
②创建对象
Random r = new Random();
上面这个格式里面,r是变量名,可以变,其他的都不允许变
③获取随机数
int number = r.nextInt(10);//获取数据的范围:[0,10)包括0,不包括10
上面这个格式里面,number是变量名,可以变,数字10可以变。其他的都不允许变
/*
Random
*/
import java.util.Random;
public class RandomDemo{
public static void main(String[] args){
Random r = new Random();
//需求:用循环获取10个随机数
for(int i=0;i <10;i++){
int number = r.nextInt(10);
System.out.println("number:" + number);
}
System.out.println("-----------------------------");
//需求:获取一个1-100之间的随机数
int x = r.nextInt(100) + 1;
System.out.println(x);
}
}
/*
猜数字
需求:
程序自动生成一个1-100之间的树脂基,使用程序实现猜出这个数字是多少?
当猜错的时候根据不同情况给出相应的提示
如果猜的数字比真实数字大,提示你猜的数据大了
如果猜的数字比真实数字小,提示你猜的数据小了
如果猜的数字与真实数字相等,提示恭喜你猜中了
*/
import java.util.Random;
import java.util.Scanner;
public class RandomTest{
public static void main(String[] args){
Random r = new Random();
int number = r.nextInt(100) + 1;
while(true){
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要猜的数字:");
int guessNumber = sc.nextInt();
if(guessNumber > number){
System.out.println("你猜的数字大了!");
}else if(guessNumber < number){
System.out.println("你猜的数字小了!");
}else{
System.out.println("恭喜您,猜中了!");
break;
}
}
System.out.println("-----------------------------");
}
}