语句2"/>
java流程语句2
循环结构
while do..while for
循环? 重复不停的做同样的事情
1、张浩Java考试成绩未达到自己的目标。为了表明自己勤奋学习的决心,他决定写一百遍
“好好学习,天天向上!”System.out.println("第1遍写:好好学习,天天向上!");System.out.println(“第2遍写:好好学习,天天向上!");System.out.println(“第3遍写:好好学习,天天向上!");System.out.println(“第4遍写:好好学习,天天向上!");System.out.println(“第5遍写:好好学习,天天向上!");System.out.println(“第6遍写:好好学习,天天向上!");System.out.println(“第7遍写:好好学习,天天向上!");System.out.println(“第8遍写:好好学习,天天向上!");System.out.println(“第9遍写:好好学习,天天向上!");System.out.println(“第10遍写:好好学习,天天向上!");
使用while循环:
int i=0;while(i<=10){System.out.println("第"+i+"篇写 好好学习天天向上!");i++;}
System.out.println("第1遍写:好好学习,天 天向上!");System.out.println(“第2遍写:好好学习,天 天向上!");System.out.println("第3遍写:好好学习,天 天向上!");System.out.println(“第4遍写:好好学习,天 天向上!");……System.out.println(“第9999遍写:好好学习天天向上!");System.out.println(“第10000遍写:好好学习,天天向上!")
怎么写出1万篇 好好学习,天天向上;
public class class1 {public static void main(String[] args) {int i=1;while(i<=10000){System.out.println("第"+i+"篇写: 好好学习,天天向上!");i++;//每循环一次就加一次}} }
什么是循环?生活中的循环:打印60份试卷 1000千米赛跑 旋转的车轮 循环结构的特点:循环条件循环操作
循环标记--->
循环想要执行 需要三个必要条件 初始值 终点判定条件 变化量初始值;
while(终点判定条件){// ()内只允许写一个好多好多执行;变化量;}
我理解就是一个for循环的变体
初始值;do{好多好多执行;变化量;}while(终点判定条件);for( 1初始值 ; 2终点判定条件 ; 4变化量 ){3好多好多执行;}允许将三个条件都写在()内 不是必须初始值 ;for( ; 终点判定条件 ; ){好多好多执行;变化量 ;}
1、while循环:先进行条件判断,再执行逻辑代码由四部分组成:初始化:初始化变量条件判断:只允许返回true或false循环体:如果条件符合要执行的逻辑代码迭代变量:促使循环有跳出的条件2、do while:先执行逻辑代码,再进行条件判断循环结构都由如下四个结构组成:初始化、条件判断、循环体、迭代
变量定义在循环外 生命周期长了 变化量放在循环内(注意上下的顺序可能对执行产生影响)while先判断后执行 条件不满足不执行啦do..while先执行后判断 条件不满足 至少执行一次
在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
求和public class WhileTest {public static void main(String[] args) {int i = 0;int sum = 0;while (i <= 100) {sum += i; //sum = sum+i;i++;}System.out.println("Sum= " + sum);}}
求100以内的偶数和
需求说明:
编程实现:计算100以内(包括100)的偶数之和
观察每一次循环中变量值的变化// 实现思路: // 1、声明整型变量num和sum // 2、循环条件:num<=100 // 3、循环操作:累加求和//先把一百以内的偶数输出 int i=1;while(i<=100){if(i%2==0){System.out.println("100以内的偶数有"+i);}i++;} //然后求和// 完成:int num =0;int sum =0;while(num<=100){if(num%2==0){System.out.println("100以内的偶数有"+sum);sum += num;}num++;}System.out.print("1-100总和是"+sum);
//老师写的://输出100以内的正整数int i = 1;while(i <= 100){System.out.println("i = " + i);//迭代变量i++; //迭代变量如果没有,就变成一个死循环}//计算100以内正整数的和int i = 1;//用来存储和int sum = 0;while( i <= 100){sum += i;i++;}System.out.println("100以内正整数的和是:" + sum);//计算100以内偶数的和int i = 1;int sum = 0;while(i <= 100){if(i % 2 == 0){sum += i;}i++;}System.out.println("100以内偶数的和是:" + sum);
while循环小任务
1.有一个水池 已经盛满了120立方米的水
有一个进水管 每小时进水18立方米
有一个排水管 每小时排水30立方米
两个水管一起开(虽然很浪费)
经过多少小时 水池的水排放干净?public class TestWhile{public static void main(String[] args){int sum = 120;//表示水池中的水int hour = 0;//记录经过小时数 ?while(sum>0){sum+=18;sum-=30;hour++;//记录一次小时数System.out.println("本次循环完毕:"+sum);} System.out.println("经过"+hour+"小时排水完毕");} }
2.画一个星星
* i==1 3 1
*** i==2 2 3
***** i==3 1 5
******* i==4 0 7public class TestWhile{public static void main(String[] args){int i = 1;while(i<=4){//画空格占位int j = 1;while(j<=4-i){System.out.print(" ");j++;}//画星星int k = 1;while(k<=2*i-1){System.out.print("*");k++;}//换行System.out.println();i++;}} }
小任务
3.小茗同学从A点以7km/h的速度向B点出发
哥哥从B点以18km/h的速度向A点出发
A和B之间的距离是1000km
求解 小茗同学和哥哥 经过多少个小时才能相遇?
4.有一个瓜农卖西瓜 一车西瓜总共1020个
每天卖掉总数的一半 多两个
求解瓜农几天才能把所有的西瓜都卖完?
5.参考之前for循环嵌套的练习(改成while循环的写法 画星星 数字金字塔 乘法表);int i = 10;while(i<=5){System.out.println("执行ing:"+i);//12345i++;}
int i = 10;while(i<=5){System.out.println("执行ing:"+i);//12345i++;}System.out.println("执行完毕:"+i);//执行输出什么? 执行完毕后 i==?
购物结算
// 需求说明: // 循环输入商品编号和购买数量 // 当输入n时结账 // 结账时计算应付金额并找零System.out.println("********************************************");System.out.println("请选择购买的商品编号:");System.out.println("1.T 恤\t2.网球鞋\t3.网球拍");System.out.println("********************************************");//创建Scanner对象Scanner sc = new Scanner(System.in);String flag = "y";//定义变量存储商品编号int pId = 0;//定义变量存储商品数量int pNum = 0;//定义变量存储T恤的单价double tPrice = 245.0;//定义变量存储网球鞋的单价double sPrice = 570.0;//定义变量存储网球拍的单价double pPrice = 320.0;//定义变量存储一次购买总金额double oneTotalPrice = 0;//定义变量存储购物总计double totalPrice = 0;while("y".equals(flag)){System.out.println();System.out.print("请输入商品编号:");pId = sc.nextInt();if(pId != 1 && pId != 2 && pId != 3){System.out.println("亲,您购买的商品不存在,请重新输入商品编号!");//跳出当前循环进行下一次循环continue;}System.out.print("请输入购买数量:");pNum = sc.nextInt();switch(pId){case 1:oneTotalPrice = tPrice * pNum;System.out.println("T 恤¥" + tPrice + "\t数量 " + pNum + " 合计 ¥" +oneTotalPrice);//累加金额totalPrice += oneTotalPrice;//清0oneTotalPrice = 0;break;case 2:oneTotalPrice = sPrice * pNum;System.out.println("网球鞋¥" + sPrice + "\t数量 " + pNum + " 合计 ¥" +oneTotalPrice);//累加金额totalPrice += oneTotalPrice;//清0oneTotalPrice = 0;break;case 3:oneTotalPrice = pPrice * pNum;System.out.println("网球拍¥" + pPrice + "\t数量 " + pNum + " 合计 ¥" +oneTotalPrice);//累加金额totalPrice += oneTotalPrice;//清0oneTotalPrice = 0;break;}System.out.print("是否继续(y/n):");flag = sc.next();}System.out.println();System.out.print("折扣:");//定义变量存储折扣double zk = sc.nextDouble();//定义变量存储应付金额double yf = totalPrice * zk;System.out.println("应付金额:" + yf);System.out.print("实付金额:");//定义变量存储实付金额double sf = sc.nextDouble();if(sf < yf){System.out.print("您输入的金额小于应付金额,请重新输入:");sf = sc.nextDouble();}System.out.println("找钱:" + (sf - yf));
do-while循环
// do-while:// 先执行,后判断。// while:// 先判断,后执行。int a = 0;while(a<0){System.out.println(a);a++;}System.out.println(“-----”);a=0;do{System.out.println(a);a++;} while (a<0); //While和dowhile的区别:// Dowhile总是保证循环体会被至少执行一次!这是他们的主要差别
//输出100以内的正整数int i = 1;do{System.out.println("输出的正整数 i = " + i);i++;}while(i <= 100);//计算100以内正整数的和int i = 1;int sum = 0;do{sum += i;i++;}while(i <= 100);System.out.println("正整数之和 = " + sum);//计算100以内偶数的和int i = 1;int sum = 0;do{if(i % 2 == 0){ //用于计算是否为偶数sum += i; //sum=sum+i;}i++;}while(i <= 100);System.out.println("一百以内的偶数的和是 " + sum);
使用for循环
// 回顾问题:输出100次“好好学习!”// 使用for循环结构// 使用while循环结构// 特点:循环次数固定 int i =0;while(i<100){System.out.println("好好学习!");i++;}for(int i=0;i<100 ++System.out.println("好好学习!");} //for比while更简洁
▪ for循环语句是支持迭代的一种通用结构,是最有效、最灵 活的循环结构▪ 语法形式▪ for (初始表达式;布尔表达式;步进) {循环体;▪ } 第三种是for循环,用的最多语法规则:for(初始化1 ; 条件判断2 ;步进器4){逻辑代码3}执行的顺序是:1-2-3-4-2-3-4-2-3-4...使用for的好处:1、代码简洁2、for循环中的初始化变量的作用域只在for循环结构中起作用,while循环中的初始化变量的作用域是从定义变量开始到方法结束▪ 注意事项– for循环在执行条件测试后,先执行程序部分,再执行步进。– 在for语句的初始化部分声明的变量,其作用域为整个for循环体– “初始化”和“循环条件表达式”部分可以使用逗号来执行多个操作– 如果三个部分都为空语句(分号;能省),相当于一个无限循环
//计算100以内正整数之和/*int sum = 0;for(int i = 1; i <= 100; i++){sum += i;}System.out.println("100以内的正整数之和是:"+ sum);*///System.out.println(i); 错误/*for(int i = 1; i <= 100; i++){sum += i;}System.out.println("100以内的正整数之和是:"+ sum);*/int sum = 0;int i = 1;for(;;){sum += i;//i++;System.out.println("100以内的正整数之和是:"+ sum);}//System.out.println("100以内的正整数之和是:"+ sum);
爬楼梯 1-->5楼
操场跑圈 1-->5圈
1--5圈
从哪里开始 1圈 起点
到哪里结束 5圈 判断 终点的条件
跑起来变化 增减程序中想要执行一个正常的循环 现实生活是类似 需要满足三个条件(必要)
初始值 终点判定条件 变化量允许将三个必要条件都写在()内
for(1初始值 ; 258终点判定条件 ; 47变化量 ){
36好多好多执行的代码;
}// 爬楼梯 1-->5楼 public class ForDemoOne{public static void main(String[] args){for(int x = 100;x<200;x++){if(x%3==1 && x%4==2 && x%5==2){System.out.println("操场上的人数为:"+x);}}} }
// 操场跑圈 1-->5圈 public class TestFor{public static void main(String[] args){int round=1;for( ; round<=5 ; round+=2){System.out.println("跑到第"+ round +"圈啦");//2 4 6}//循环执行完毕 round===6System.out.println("循环执行完毕:"+round);//变量的生命周期问题(变量 栈内存空间 从声明开始创建出来 用完及回收)} }
**循环嵌套**
需求 控制台打印*
1.控制台输出一行 **** 随意个数//复用性System.out.println("尊敬的客户,您到底要画几个?");Scanner input = new Scanner(System.in);int count = input.nextInt();for(int i=1;i<=count;i++){System.out.print("*");}
2.控制台输出4行 **** 每一行个数随意
****
****
****int count = 4;//每一行星星的个数随意for(int i=1;i<=4;i++){for(int j=1;j<=count;j++){System.out.print("*");}System.out.println();}//让计算机帮我们做4次一样的事情//i j分别控制着什么? i控制的是行数 j控制的是每一行星星的个数//双层循环嵌套执行的次数是乘机的关系// i==5 5<=4 false// j==5 5<=4 true// ****// ****// ****// ****// |
3.控制台输出4行 * i==1 1
** i==2 2
*** i==3 3
****for(int i=1;i<=4;i++){//控制四行//画星星for(int j=1;j<=i;j++){System.out.print("*");}//换行System.out.println();}//i==5 5<=4 // j==1 j<=3// *// **// ***// ****// |
4.控制台输出4行 $$$* i==1 3 1
$$** i==2 2 2
$*** i==3 1 3
**** i==4 0 4import java.util.Scanner;public class DrawStar{public static void main(String[] args){for(int i=1;i<=4;i++){//控制四行//画占位符for(int j=1;j<=4-i;j++){System.out.print("$");}//画星星for(int j=1;j<=i;j++){System.out.print("*");}//换行System.out.println();}} }
作业 :
//计算顾客年龄比例// 计算各层次的顾客比例//需求说明:// 商场对顾客的年龄层次进行调查//创建Scanner对象Scanner sc = new Scanner(System.in);//定义变量存储大于30岁的顾客人数int ageUp = 0;//定义变量存储小于30岁的顾客人数int ageDown = 0;for(int i = 1; i <= 10; i++){System.out.print("请输入第" + i + "位顾客的年龄:");int age = sc.nextInt();if(age > 30){//累计ageUp++;}if(age < 30){//累计ageDown++;}}System.out.println("30岁以下的比例是:" + (ageDown/10.0 * 100) + "%");System.out.println("30岁以上的比例是:" + (ageUp/10.0 * 100) + "%");
//用while和for循环分别计算100以内奇数和偶数的和,并输出。int num =1;int sum =0;int sum2 =0;while(num<=100){if(num%2==0){sum += num;}else{sum2 += num;}num++;}System.out.println("100以内的偶数是"+sum);System.out.println("100以内的奇数是"+sum2);int sun=sum+sum2;System.out.print("1-100偶数和奇数的和是"+sun);//for循环输出int sum=0;int num=0;for(int i =1;i<=100;i++) {//用于循环i的值,并且是小于等于100的if(i%2==0) { //判断是否为偶数sum+=i;}else {undefinednum+=i;}}System.out.println("偶数和:"+sum);//输出偶数的和System.out.println("奇数和:"+sum);//输出奇数的和int sun=sum+num;System.out.print("1-100偶数和奇数的和是"+sun);
//用while和for循环输出1-1000之间能被5整除的数,且每行输出3个。//使用While循环:int i=1;int count=0; //用于计算输出数的个数,以便换行while(i<=1000) {if(i%5==0) { //判断i是否能被5整除System.out.print(i+"\t");//如果能被5整除,输出,并且空几格count++;}i++; //i自增,以便进行下一个数的判断if(count%3==0) { //如果输出了三个数,则可以换行System.out.println();}//使用for循环:int count=0;用于计算输出数的个数,以便换行for(int i=1;i<=1000;i++) {//设置i的初始范围,并限制为i为<=1000的数if(i%5==0) { //判断i是否能被5整除System.out.print(i+"\t");//如果能被5整除,输出,并且空几格count++;}if(count%3==0) { //如果输出了三个数,则可以换行System.out.println();}}
//使用循环分别实现将10进值整数变成二进制数// 给定一个十进制数int num2 = 10;// 最初的十进制// int result =0;String result = "";// int num = num2;// 运算中的变化的被除数// 转换成二进制do {// 对2取余数int mod = num % 2;// 输出二进制位(余数)// System.out.print(mod);result = mod + result;//余数 ""+1---1---01----101---1101System.out.println(result);// 对2取商int div = num / 2;// 商做成新的被除数num = div;} while (num != 0);// 输出十进制数和对应的二进制数System.out.println(num2 + "----------->" + result);
编程求:1!+2!+……+10!
int ntm = 10;//设置阶乘计算的项数String str = "";//用来拼接字符串int sum = 0;//用来计算各个阶乘的和for (int i = 1 ; i <= ntm ; i++) {String tmp = "";//暂存字符串if(i == ntm) {tmp = i + "!";}else {tmp = i + "! + ";}int tSum = 1;//暂存每一项的阶乘结果for(int j = 1 ; j <= i ; j++) {tSum *= j;//计算阶乘}//sum += tSum;//计算总和str += tmp;//字符串拼接}//so easy//System.out.println(str+" = "+sum);System.out.println(str);
需求 小学数学应用题
操场上有一百多人 让他们排队
三个人一组 多一个 , 四个人一组 多两个 ,五个人一组 多两个
求解 操场上的人数多少?
解: 设 操场的人数 x
x%3==1 x%4==2 x%5==2
计算机想要找到x的值 不是通过计算得来的 通过最笨拙的方法 挨个尝试
想要挨个的尝试 需要一个范围
让计算机帮我们 在100--200之间 挨个的尝试一下 哪一个数字符合上述的条件
for(){}
练习:
1.甲乙丙丁四个人加工零件 加工的总零件数为370个
如果甲加工的零件数多10
如果乙加工的零件数少20
如果丙加工的零件数乘以2
如果丁加工的零件数除以2
则四个人加工的零件数就相等啦
求 四个人加工的零件个数分别是多少?public class DemoOne{public static void main(String[] args){//可读性 健壮性(严谨) 优化(结构 冗余 效率 内存 复用性 可扩展性)for(int i = 45;i < 95;i++){if((i-10) + (i+20) + (i/2) + (i*2) == 370){System.out.println("甲加工的零件数为:"+(i-10));System.out.println("乙加工的零件数为:"+(i+20));System.out.println("丙加工的零件数为:"+(i/2));System.out.println("丁加工的零件数为:"+(i*2));}}} }
2.鸡兔同笼问题
小鸡 小兔子 关在同一个笼子里 小鸡两只脚 小兔子四只脚
小鸡+小兔子 总数 50只 脚的总数160只
求 小鸡 和 小兔子各多少只。public class DemoTwo{public static void main(String[] args){for(int x=1;x<50;x++){if(x*2+(50-x)*4 ==160){System.out.println("小鸡的个数为:"+x);System.out.println("小兔子个数为:"+(50-x));}}} }
3.通过循环找寻三位数字的水仙花数
153---> 1 5 3
1 + 125 + 27 == 153100-999之间挨个尝试 满足上述规则数字 153 370 371 407
public class DemoThree{public static void main(String[] args){double value = Math.pow(double a , double b);//帮我们计算a的b次方for(int num=100;num<1000;num++){int b = num/100;int s = num/10%10;// num%100/10;int g = num%10;if(b*b*b+s*s*s+g*g*g==num){System.out.println(num+"是水仙花数");}}} }
public class DemoThree{public static void main(String[] args){for(int num=100;num<1000;num++){if(Math.pow(num/100,3)+Math.pow(num%100/10,3)+Math.pow(num%10,3)==num){System.out.println(num+"是水仙花数");}}} }
1. *******
***#***
**###**
*#####*import java.util.Scanner;public class Demo1{public static void main(String[] args){//******* 画星星 换行 i==1 4-->7 5-->9//*** *** 画星星 画空格 画星星 换行 i==2 3 1 3//** ** 画星星 画空格 画星星 换行 i==3 2 3 2//* * 画星星 画空格 画星星 换行 i==4 1 5 1//可读性 健壮性(严谨) 优化(结构 冗余 性能 内存 复用 扩展) 2*i-3Scanner input = new Scanner(System.in);System.out.println("请您输入行数:");int line = input.nextInt();for(int i=1;i<=line;i++){//控制行数if(i==1){//第一行规则//画星星for(int j=1;j<=2*line-1;j++){System.out.print("*");}}else{//后三行规则//画星星for(int j=1;j<=(line+1)-i;j++){System.out.print("*");}//画空格for(int j=1;j<=2*i-3;j++){System.out.print(" ");}//画星星for(int j=1;j<=(line+1)-i;j++){System.out.print("*");}}//换行System.out.println();}} }
2. 1
121
12321
1234321public class Demo2{public static void main(String[] args){//数字金字塔 空格 左边 右边// 1 i==1 3 1-1 0// 12 1 i==2 2 1-2 1-1// 123 21 i==3 1 1-3 2-1// 1234 321 i==4 0 1-4 3-1for(int i=1;i<=4;i++){//控制行数//空格占位for(int j=1;j<=4-i;j++){System.out.print(" ");}//左边数字 改变--利用变量 利用循环里层的变量j来控制 j++for(int j=1;j<=i;j++){System.out.print(j);}//右边数字 改变--利用j变量 j--for(int j=i-1;j>=1;j--){System.out.print(j);}//换行System.out.println();}} }
3. 1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9public class Demo3{public static void main(String[] args){//打印输出9*9乘法表//1*1=1 表达式当做--?//1*2=2 2*2=4//1*3=3 2*3=6 3*3=9// j + "*" + i + "=" + j*i//被乘数 * 乘数 = 乘积//在一行之中 被乘数发生变化 j 乘数固定 ifor(int i=1;i<=9;i++){//控制行数//画一个?for(int j=1;j<=i;j++){//控制每一行表达式的个数System.out.print(j+"*"+i+"="+(j*i)+"\t");}//换行System.out.println();}} }
4. 找寻2-100之间的素数(质数) 只能被1和本身整除的数字 2 3 5 7 11
2是素数
3是素数
4不是素数
5是素数
6不是素数
7是素数
8不是素数
9不是素数public class Demo4{public static void main(String[] args){//想一个事情 郑中拓 张三我的学生(A大学)// 我 走到A大学学校门口 巧遇张三// 我在学校门口等 张三进学校去钱包// 去钱包的过程中不许做其他的事情 学校的长椅上休息// 张三进入学校 我在门口等 --->出来学校 怎么知道没有座过椅子(椅子刚刷了油漆)// 1.在进学校之前 需要在他的身上放一个标识 (干净的裤子)// 2.如果坐过椅子 标识改变(变脏啦)// 3.出来学校再次看一看标识 (如果跟进学校之前一样 证明没做过 否则做过)// 2-100之间的素数 每一个数字做一个输出for(int num=2;num<=100;num++){//先把1和本身这两个数字 刨除掉//在剩下的数字中挨个找寻一遍 看一看还有没有其他的整除数字boolean x = false;//标识干净的裤子 //内存空间小for(int i=2;i<=num/2;i++){//在其余的数字中挨个找寻 还有没有能整除的if(num%i==0){System.out.println(num+"不是素数");x = true;//相当于标识修改啦 变脏啦break;//不是中断if 当满足if条件的时候中断循环}}if(x==false){System.out.println(num+"是素数");}}} }
多重循环
作业:
打印矩形(4*5)
打印平行四边形()
打印等腰三角形
打印菱形
等边三角形可以实现吗import java.util.Scanner; public class Rectangle{public static void main(String[] args){int width = 3;int high = 2;Scanner sc =new Scanner(System.in);System.out.println(""); //*******************************************************System.out.println("*******打印矩形******");//打印4*5矩形System.out.print("请输入矩形的宽:");width = sc.nextInt();System.out.print("请输入矩形的高:");high = sc.nextInt();for(int i = 1;i <= high;i++){for(int j = 1;j <= width;j++){System.out.print("*");}System.out.println();}System.out.println(""); //*******************************************************System.out.println("*******打印平行四边形******");System.out.print("请输入平行四边形的底:");width = sc.nextInt();System.out.print("请输入平行四边形的高:");high = sc.nextInt();//打印平行四边形for(int i = 1;i <= high;i++){for(int k =1;k <= high-i;k++){System.out.print(" ");}for(int j = 1;j <= width;j++){System.out.print("*");}System.out.println();}System.out.println(""); //*******************************************************System.out.println("*******打印等腰三角形******");//int bottom;int waist;//System.out.print("请输入等腰三角形的底:");//bottom = sc.nextInt();System.out.print("请输入等腰三角形的行数:");waist = sc.nextInt();//打印等腰三角形for(int i = 1;i <= waist;i++){for(int k =1;k <= waist - i +1;k++){System.out.print(" ");}for(int j = 1;j <= 2*i -1;j++){System.out.print("*");}System.out.println();}System.out.println(""); //*******************************************************System.out.println("*******打印菱形******");int line;System.out.print("请输入菱形的边长:"); //菱形的边长为line,菱形上半部分的行数为(line-1),整体行数为(2*line-1)line = sc.nextInt();//打印菱形for(int i = 1;i <= line;i++){for(int k =1;k <= line - i;k++){System.out.print(" ");}for(int j = 1;j <= 2*i -1;j++){System.out.print("*");}System.out.println();}for(int i = line-1;i >= 1;i--){for(int k =1;k <= line - i;k++){System.out.print(" ");}for(int j = 2*i-1;j >= 1;j--){System.out.print("*" );}System.out.println();}} }
百钱买百鸡
/*百钱买百鸡 */public class BuyChicken{public static void main(String[] args){for(int i = 0; i<=20;i++){for(int j = 0; j <=34; j++){for(int k = 0; k<=300 ;k++){if(((i + j + k) == 100) && ((5 * i + 3 * j + k/3) == 100) && (k % 3 == 0)){System.out.println("公鸡:" + i + " 母鸡:" + j + " 小鸡:" + k);}}}}} }
斐波那契数列
import java.util.Scanner; /*斐波那契数列,选择输出多个数 */public class Febonaci{public static void main(String[] args){//创建Scanner对象Scanner sc = new Scanner(System.in);System.out.print("请输入要输出几个数:");int num = sc.nextInt();int x = 1;int y = 1;int z = 0;for(int i = 1; i<= num;i++){if(i == 1 || i == 2){System.out.print(1 + "\t");}else{z = x + y;x = y;y = z;System.out.print(z + "\t");}}} }
输出九九乘法表:
/*输出九九乘法表 */public class NineNineDemo{public static void main(String[] args){//外层循环控制行for(int i = 1 ; i <= 9; i++){//内层循环控制列for(int j = 1; j<=i ;j++){System.out.print(j + "*" + i + "=" + (i*j) + "\t");}System.out.println();}} }
方法:
定义:
调用:/*return:– 1、return expression返回一个值给调用该方法的语句。返回值的数据类型必须和方法声明中的返回值类型一致或是精度低于声明的数据类型。– 2、return当方法声明中用void声明返回类型为空时,它不能返回任何值。*/public class ReturnDemo{public static void main(String[] args){//调用方法System.out.println(getNumber());//return;}public static int getNumber(){return 'a';} }
重载 在后面的面向对象里面学习
递归算法
什么是递归(recursion)程序调用自身的编程技巧称为递归。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法
递归结构递归结构包括两个部分:递归结束条件。解答:什么时候并调用自身方法。如果没有条件,将陷入死循环。递归体,解答:什么时候需要调用自身方法。使用递归求n!使用实现斐波那契数列
public class A { static long factorial(int n){if(n==1){return 1;}else{return n*factorial(n-1);}}public static void main(String[] args) {long d1 = System.currentTimeMillis();System.out.println("阶乘的结果: ",factorial(10));long d2 = System.currentTimeMillis();System.out.println(“递归费时: ”,d2-d1);//耗时:32ms} }
递归的优点简单的程序递归的缺点但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢的多递归的使用场合任何可用递归解决的问题也能使用迭代解决。当递归方法可以更加自然地反映问题,并且易于理解和调试,并且并强调效率问题时,可以采用递归;在要求高性能的情况下尽量避免使用递归,递归既花时间又耗内存
import java.util.Scanner; /*斐波那契数列,可以选择输出几个数 */public class Febonaci{public static void main(String[] args){//创建Scanner/*Scanner sc = new Scanner(System.in);System.out.print("请输入要输出几个数:");int count = sc.nextInt();int x = 1;int y = 1;int z = 0;for(int i = 1;i <= count;i++){if(i== 1 || i==2){System.out.print(1 + "\t");}else{z = x + y;x = y;y = z;System.out.print(z + "\t");}}*/for(int i = 1;i<=10;i++){System.out.print(getNumber(i) + "\t");}}/*递归算法:在程序运行过程中,发生程序本身调用自己的情况,称之为递归注意:1、能不使用递归算法尽量不使用递归算法使用递归算法会加大资源的消耗如果递归算法的深度过于深,那么可能造成栈溢出2、如果用其他方法无法实现,就必须用递归例如:输出电脑上某一个磁盘上的所有文件名*/public static int getNumber(int number){if(number==1 || number == 2){return 1;}else{return getNumber(number-1) + getNumber(number-2);}} }
Java实验复盘:while与do-while循环语句用法及对比_ArikaKirihara的博客-CSDN博客
三种循环语句的详解和使用(for,while,do-while)_『愚』的博客-CSDN博客_do while循环的用法
Java循环语句_The_best_L的博客-CSDN博客
while循环和do-while循环的区别_XZY980317的博客-CSDN博客
break continue return
java for循环 break continue return_zhongaixiaominzi的博客-CSDN博客多重循环中使用continue
示例
3个班级各4名学员参赛,计算每个班级参赛学员平均分,统计成绩大于85分学员数
思路
外层循环控制班级
内层循环控制某个班级的每名学生
成绩并大于85,continue
成绩大于85,学员数加1public class Demo03 {public static void main(String[] args) {//某次程序大赛,3个班级各4名学员参赛,计算每个班参赛学员的平均分Scanner sc=new Scanner(System.in);//外层控制班级for(int i=0;i<3;i++){int sum=0;//总分int avg;//平均分System.out.println("请输入第%s个班级的学生信息:"+i+1);//%s的作用为填充占位符//内层循环控制每个学员的分数for(int j=0;j<4;j++){System.out.printf("请输入第%s个学生的成绩:",j+1);System.out.println();int score=sc.nextInt();sum+=score;}//计算每个班级的平均分avg=sum/4;System.out.printf("班级平均分:",avg);}}}
为什么需要break语句
回顾break用于switch
int i = 2;//控制星期数switch(i){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; } //输出为星期二; //遇到break,立即跳出switch语句
描述4000米长跑比赛
第8圈,
快累死了…
我要退出…//其他语句 for(int i=1; i<=10; i++){if(i==8){//到了第八圈就不跑了System.out.println(i);break;//我要退出}}
1~10之间的整数相加,得到累加值大于20的当前数提示:1、使用循环进行累加,从1到102、判断累加值是否大于203、如果大于20,则跳出循环,并打印当前值
int sun=0;for(int i=1;i<=10;i++){sun=i+sun;if(sun>20){System.out.println(sun);break;}}
总结:
选择结构
if语句 单、双、多分支选择结构,等值、并等值判断均可
switch语句 叧有多分支选择结构 叧针对等值判断
循环结构
while循环
先判断再循环 适合循环次数并固定情况
do-while循环 先循环再判断 适合循环次数并固定情况
for循环
适合循环次数固定情况
循环跳转语句
break 跳出本层循环,跳出外层循环需要结合标签或符号位实现
continue 提前结束本次循环
return 结束当前方法
多重循环
任何两种循环都可以相互嵌套
外层循环变量变化一次,内层循环变量要变化一遍
递归
程序调用自身的编程技巧称为递归。
递归简单,但是内存耗用多,速度要比循环慢
任何可用递归解决的问题也能使用循环解决,反之并见得
转义字符
\ 转义字符 将身后的一个字符意思发生转换
转换特殊的符号 比如 " ' \
转换几个特殊的字母 比如 \n换行 \r回车 \t制表符java中转义符号\的使用_lolichan的博客-CSDN博客
更多推荐
java流程语句2
发布评论