for循环
求和思想?
两个变量
1)最终结果变量 int sum = 0 ;
2)循环中的变量x不断的在变化
举例:
1-10之间的和(数据本身1,2,3,4,5,6,7,8,9,10...变量x)
3)循环获取一直变化的数据x
sum+=x ;循环体语句 sum = sum +x ;
4)输出最终结果变量sum即可!
需求:
请您求出1~10数据的和 class ForDemo2{ public static void main(String[] args){ int sum = 0 ; //使用for循环:可以获取1-10之间的数据 for(int x = 1; x <= 10 ; x ++){ //for循环:就是遍历 //(就是将给定范围内的数据一一获取到完成业务操作) //x=1,2,3,4,5,6,7,8,9,10 sum += x ; } System.out.println("1-10之间的数据和是:"+sum) ; } }
/*
什么是水仙花数?
水仙花数:指的三位数,而且每个位的立方和就是当前数据本身!
153 = 3*3*3+5*5*5 + 1*1*1
需求:
求出所有的水仙花数是什么?
分析:
1)三位数:已经明确了范围100-999, 变量x (for循环,明确循环次数)
2)确定三位数的数据值 x
规律:确定每个位上的数据
定义三个变量
int ge = x % 10 ; //153 % 10 = 3 ;
int shi = x /10 % 10 ; //153 /10 =15 %10 = 5
int bai = x /10/10 % 10 ; //153 /100 % 10 = 1
3)确定了数据之后:
只要满足条件
if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
//就输出x即可!
}
*/ class ForDemo3{ public static void main(String[] args){ System.out.println("水仙花数是以下的数据:") ; //求出所有的水仙花数 //水仙花:三位数--明确范围 for(int x = 100 ; x <=999 ; x ++){ //获取到x的数据,需要确定每个位上的数据本身 //定义三个变量 ge,shi,bai int ge = x % 10 ; //获取个位上的数据 int shi = x /10 % 10 ; //获取十位上的数据 int bai = x /10 /10 % 10 ;//获取百位上的数据 //满足条件 if(x==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){ System.out.println(x) ; } /* 水仙花数是以下的数据: 153 370 371 407 */ } } }
/*
课堂练习
求1-100之间的和
求1-100之间的偶数和
求5的阶乘
*/ class ForTest1{ public static void main(String[] args){ //求1-100之间的和 //定义一个最终结果变量 int sum = 0 ; for(int x = 1 ; x <=100 ; x ++){ //循环体语句 sum += x ; } System.out.println("1-100之间的和:"+sum) ; System.out.println("------------------------------") ; //求1-100之间的偶数和 int sum2 = 0 ;//最终结果变量 for(int x = 1 ; x <=100 ; x ++){ //获取到1-100之间的数据 //满足条件 if(x % 2 == 0 ){ //偶数 //求和 sum2 += x ; } } System.out.println("1-100之间的偶数和:"+sum2) ; System.out.println("------------------------------") ; //求5的阶乘 /* 求阶乘思想 和求和思想一致 n! = n*(n-1)*(n-2)...*3*2*1 ; */ //定义一个最终结果变量 int jc = 1 ;//1!永远是1 for(int x = 2 ; x<=5 ; x ++){//1*1=1,x的变量从2开始也行 //获取到1-5之间的数据 jc*=x ; //jc = jc * x ; } System.out.println("5的阶乘是:"+jc) ; } }
/*
统计思想:
需求:统计所有的水仙花数有多少个?
步骤
1)定义统计变量 count ,从0开始
2)水仙花数:三位数,明确了范围,需要使用for循环100-999之间 x
3)确定每个位数据本身
int ge = x % 10 ;
int shi = x /10 % 10 ;
int bai = x /10/10 % 10 ;
4)当前满足这个条件
x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)
统计变量++ ;
5)输出统计变量即可!
*/ class ForDemo{ public static void main(String[] args){ //1)定义一个统计变量 int count = 0 ; //2)水仙花数:三位数,明确了范围,需要使用for循环100-999之间 x for(int x = 100; x <1000; x ++){ //确定每个位数据本身 int ge = x %10 ; int shi = x / 10 % 10 ; int bai = x /10 /10 %10 ; //满足条件 if(x ==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){ count ++ ; //输出 System.out.println("第"+count+"次的水仙花数是:"+x) ; } } System.out.println("水仙花数共有"+count+"个") ; } }
while循环
/*
while循环格式
扩展格式:
初始化语句;
while(条件表达式){
循环体语句;
控制体语句(步长语句) ;
}
流程:
1)初始化语句进行赋值
2)判断条件表达式是否成立
如果成立,执行循环体语句,控制体语句对变量进行自增或者自减
3)继续判断条件表达式是否成立
....
....
4)如果条件表达式不成立,while循环结束
*/
class WhileDemo{ public static void main(String[] args){ /* 扩展格式: 初始化语句; while(条件表达式){ 循环体语句; 控制体语句(步长语句) ; } */ //要在控制台输出 5次"我爱高圆圆" //原始做法:输出5次 //System.out.println() ; //套格式去使用while int x = 1 ; while(x<=5){ System.out.println("我爱高圆圆") ; x++; } } }
/*
面试题:
while循环和for循环的区别
共同点:都能够描述循环的思想,将重复度高的代码进行优化,解决冗余度问题
不同点:
1)格式上不同
for(初始化语句;条件表达式;控制体语句){
循环体语句;
}
初始化语句;
while(条件表达式){
循环体语句;
控制体语句;
}
2)从内角度考虑,for循环使用完毕结束后,那么当前这个变量也就被释放掉了,而while不会,它始终
可以访问到这个变量,所以相对来说说,for循环比较节省内存空间!
3)释放明确循环次数
明确循环次数:优先采用for循环,其次再是while
while循环:不明确循环次数,使用
实际开发中,for循环使用最多!
while循环一般都是这样使用!
while(true){ 死循环
//当达到某种条件,break;中断了
}
*/ class WhileDemo2{ public static void main(String[] args){ //分别使用for和while来实现 6次"学习Java哪家强,高新六路立人科技找千锋!" //for循环 for(int x = 1 ; x <=6 ; x ++){ System.out.println("学习Java哪家强,高新六路立人科技找千锋!") ; } //System.out.println(x) ;//找不到符号 System.out.println("over...") ; System.out.println("---------------------------------") ; /* 初始化语句; while(条件表达式){ 循环体语句; 控制体语句; } */ int y = 1 ; while(y<=6){ System.out.println("学习Java哪家强,高新六路立人科技找千锋!") ; y++ ; } System.out.println(y) ; } }
/*
while循环格式:
1)求出1-100之间的和
2)求出1-100之间的偶数和
3)求5的阶乘!
4)求出所有的水仙花数
5)统计所有的水仙花数有多少个
*/ class WhileTest{ public static void main(String[] args){ //求出1-100之间的和 //定义一个最终结果变量 int sum = 0 ; int x = 1; while(x<=100){ sum += x ; x ++ ; } System.out.println("1-100之间的和是"+sum) ; //2)求出1-100之间的偶数和 System.out.println("----------------------------") ; int sum2 = 0 ; int y = 1 ; while(y<=100){ if(y%2==0){ sum2 += y ; } y++ ; } System.out.println("1-100之间的偶数和是"+sum2) ; System.out.println("----------------------------") ; //求5的阶乘! int jc = 1 ; int m = 2; while(m<=5){ jc *= m ; m++ ; } System.out.println("5的阶乘是:"+jc) ; System.out.println("----------------------------") ; //求出所有的水仙花数 System.out.println("水仙花是以下:") ; int j = 100 ; //三位数,从100开始 while(j<=999){ //确定每个位的数据本身 int ge = j % 10 ; int shi = j /10 % 10 ; int bai = j /10 /10 % 10 ; //判断 if(j==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){ //输出 System.out.println(j) ; } j ++ ; } System.out.println("----------------------------") ; //统计所有的水仙花数有多少个 //定义统计变量 int count = 0 ; int n = 100 ; //三位数,从100开始 while(n<=999){ //确定每个位的数据本身 int ge = n % 10 ; int shi = n /10 % 10 ; int bai = n /10 /10 % 10 ; //判断 if(n==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){ count ++ ;//统计变量++ //输出 System.out.println("第"+count+"次的水仙花是:"+n) ; } n++ ; } System.out.println("水仙花数共有:"+count+"个") ; } }
do-while循环
/*
do-while格式:
初始化语句;
do{
循环体语句;
控制体语句;
}while(条件表达式) ;
执行流程:
1)初始化语句执行
2)执行条件表达式,如果条件表达式不成立,循环体至少执行一次!
如果条件表达式成立...然后控制体语句,依次判断;
do-while循环和其他两个循环的最大的区别:循环体至少执行一次;
*/ class DoWhileDemo{ public static void main(String[] args){ //在控制台输出6次"我喜欢高圆圆,虽然她已经42岁了" int x = 7 ;//初始化语句 do{ System.out.println("我喜欢高圆圆,虽然她已经42岁了") ; x ++ ; }while(x<=6) ; } }
死循环的应用
/*
死循环中常见的两种格式
for(;;){
//业务操作
}
while(true){//恒成立 (使用居多)
//业务操作..
}
*/ class DieWhileForDemo{ public static void main(String[] args){ //for循环的死循环格式 /* for(;;){ System.out.println("我很高兴,学习了for循环的死循环格式...") ; } */ //while循环的死循环格式 while(true){ System.out.println("我很高兴,学习了while循环的死循环格式...") ; //实际开发中,需要完成一些业务逻辑操作, //当达到某种条件的时候,结束掉死循环,---使用 break ;(结束,中断) } } }
/*
Jdk提供了一个数学运算类java.lang.Math(是一个工具类)
可以针对三角函数,对数,指数等等进行数学运算!
提供了一个方法:
public static double random():产生的一个随机数[0.0,1.0)
*/ class MathDemo{ public static void main(String[] args){ //使用Math数学运算的工具类,帮助我们产生[0.0,1.0)之间的随机数呢 //double result = Math.random() ; //使类名.方法名名() ; //System.out.println(result) ; //需要产生的int类型的1-100之间的随机数 for(int x =1 ; x <=10 ;x ++){ int result = (int)(Math.random()*100+1); System.out.println(result) ; } } }
/*
需求:
玩一个猜数字游戏
实现步骤:
1)猜1-100之间的随机数,产生1-100之间的随机数
int 变量名 = (int)(Math.random()*100+1) ;
//不断录入数据,将下面的逻辑---使用while(true){}
2)键盘录入一个数据int---guessNum
3)判断 使用guessNum和产生的1-100之间的随机数进行比较,
如果大了,提示"对不起,您要猜的数据大了"
如果小了,提示"对不起,您要猜的数据小了"
如果一致,提示"恭喜您,猜对了..."
提示"游戏结束了..."
*/
//导包 import java.util.Scanner ; class WhileTest{ public static void main(String[] args){ System.out.println("准备开始玩游戏了...") ; //产生一个1-100之间的随机数 int num = (int)(Math.random()*100+1) ; //定义统计变量 int count = 0 ; //需要不断录入,while(true){} while(true){ //统计变量++ count ++ ; //创建键盘录入对象 Scanner sc = new Scanner(System.in) ; //提示并录入数据 System.out.println("请您输入要猜的数据:") ; int guessNum = sc.nextInt() ; //判断 if(guessNum > num){ System.out.println("对不起,您要猜的数据大了...") ; }else if(guessNum < num){ System.out.println("对不起,您要猜的数据小了...") ; }else{ System.out.println("恭喜您,第"+count+"次猜中了...") ; //结束循环 break ; } } //System.out.println("游戏结束了,欢迎下次使用!") ; } }