Java学习的第八天(JavaSE基础04

mac2024-04-13  37

一、嵌套if

思路:只有被嵌套的if语句是在另一个if语句条件满足的前提下才能去执行

package com.jichuyufa; import java.util.*; public class Demo_QianTaoIf { public static void main(String[] args) { //嵌套if //需求:假如一个保险箱设了两道密码,内外各一道 //password1=123 password2=456;前提是第一道密码只有成功才能去打开第二道密码 //自己输入的密码用键盘录入,两道密码全部正确打开才能取到钱 Scanner sc=new Scanner(System.in); System.out.println("请输入保险柜的密码:"); int password1=sc.nextInt(); if(password1==123){ System.out.println("恭喜你,成功打开了第一道密码锁"); System.out.println("请继续输入保险柜的密码:"); int password2=sc.nextInt(); if(password2==456){ System.out.println("恭喜你,成功打开了保险柜,可以取钱了!!"); }else { System.out.println("触发警报!!"); } }else { System.out.println("触发警报!!"); } } }

二、Switch(选择结构)

switch (表达式/变量) { case 1: 语句体1; break; case 2: 语句体2; break; ... default: 语句体n+1; break; } package com.jichuyufa; import java.util.*; public class Demo_Switch { public static void main(String[] args) { //switch语句(选择结构) //需求:买东西,输入数字 0--"包子" 1--"邵阳米粉" 2--"螺蛳粉" 3--"小米粥" 4--"烧麦" 其他数字--"不吃早餐" Scanner sc=new Scanner(System.in); System.out.println("请输入你的早餐编号,不准输入负数:"); int a=sc.nextInt(); switch (a){ case 0: System.out.println("包子"); break; case 1: System.out.println("邵阳米粉"); break; case 2: System.out.println("螺蛳粉"); break; case 3: System.out.println("小米粥"); break; case 4: System.out.println("烧麦"); break; default: System.out.println("不吃早餐"); } } }

总结: Switch需要注意的地方

* 1.每个case后面必须加break(中断),否则会出现"代码穿透"现象 什么是代码穿透:如果case0没有加break,会输出case0和case1语句体的结果 * 2.default放在最后面,break可以省略,因为它后面已经是switch的}(代表已经结束) * 3.default没有放在最后面,一定要加上break * 4.变量的类型可以是byte,short,int,char类型,而在jdk1.7版本中加入了String,不能是long,float,double * 5(了解)switch和多重if语句的区别 * 多重if一般用于区间的判断,而switch语句用于单个变量--对应的单个值的判断 * 6.switch语句什么时候结束 * 1.碰到break * 2.碰到}(代表已经结束)

三、循环

理解循环的三要素: 1.循环变量的初始化;2.循环变量的改变;3.循环条件的判断

1.while循环

1.1 while循环的格式
1.循环变量的初始化 2.while(循环的条件判断){ //循环体---循环要做的事情 3.循环变量的改变 //作用:避免死循环 } package com.jichuyufa; public class Demo_While { public static void main(String[] args) { //跑圈 //1.循环变量的初始化 int count=0; //2.循环条件的判断 while(count<10){ //3.循环体 System.out.println("跑第"+(count+1)+"圈"); //4.循环变量的改变 count++; } System.out.println("跑完了"); } }
1.2 打印1–100之间所有的偶数
//打印1--100之间所有的偶数 int a=0; while(a<=100){ //判断a是否为偶数 4/2--余数为0 4%2==0 //在这里如果不进行判断,那么就脱离我们的初衷了,必须每个数字都判断完 if(a%2==0){ System.out.println("偶数是:"+a); } a++; }
1.3 while循环的执行流程
1.循环变量的初始化 2.判断条件 3.循环体 4.条件的改变 5.执行完之后又回到条件判断 6.循环体 7.条件的改变 8.执行完之后又回到条件判断 9.如果条件不满足就结束整个while循环 10.结束

while循环的循环变量在循环结束之后还可以接着使用

2.do…while循环

2.1 do…while循环的格式(了解,用的很少)
1.循环变量的初始化 do{ //循环体 2.循环变量的改变 }while(循环条件的判断); //注意:这里的逗号千万要记得加上 package com.jichuyufa; public class Demo_DoWhile { public static void main(String[] args) { //循环变量的初始化 int i=1; do{ //循环体 System.out.println("helloworld\t"+i); //循环变量的改变 i++; //循环条件的判断 }while(i<=10); //必须以;结尾 System.out.println(i); //12 } }

细节: 1.do..while是先执行再判断的循环 2.do..while循环不管初始化如何,循环体至少要执行一次

结论:do..while循环的循环变量在循环结束之后还可以使用

2.2do…while循环的执行流程
1.循环变量的初始化 2.循环体 3.循环变量的改变 4.循环条件的判断 5.满足条件之后返回循环体 6.循环变量的改变 ...

3.for循环

3.1 for循环的格式
for(循环变量的初始化;循环条件的判断;循环变量的改变){ //循环体 } package com.jichuyufa; public class Demo_For { public static void main(String[] args) { for(int i=1;i<=10;i++){ System.out.println("helloworld\t"+i); } System.out.println(); for(int i=1;i<=10;i++){ //i在上次循环结束后被销毁了,这里是重新开辟一个内存空间可以接着用变量i System.out.println("helloworld\t"+i); } } }

结论: 1.for循环的循环变量是在循环结束之后,会被垃圾回收器自动回收(可以减少内存的损耗,提高程序的效率),所以在循环外面找不到循环变量;

2.如果想在循环结束之后硬是要使用循环变量,可以把循环变量定义在循环外面,如下所示:

int i; for(i=1;i<=10;i++){ //循环体 } System.out.println(i); //i=11
3.2 for循环的执行流程
1.循环变量的初始化 2.循环条件的判断 3.循环体 4.循环变量的改变 5.循环条件的判断 6.循环体 7.循环变量的改变 ...

四、三种循环的总结(区别)

1.while和for循环是先判断循环条件是否满足,再执行循环体,而do..while循环是先执行一次循环体,然后再进行循环条件的判断 2.while和do..while循环的循环变量是在循环结束之后还可以继续使用,而for循环的循环变量在循环结束之后会被垃圾回收器自动清除,出了for循环,循环变量就找不到了,这样做的目的是为了减少内存的损耗,提高程序的效率

五、跳转控制语句(两个关键字用来控制循环)

break(中断,退出):跳出整个循环,结束整个循环 continue:跳出本次循环,继续下次循环

六、嵌套循环

package com.jichuyufa; /*输出如下图案: * *** ***** ******* ********* *********** ************* *************** ***************** */ public class Demo_ForInFor { // public static void main(String[] args) { for(int i=1;i<=9;i++){ for(int j=1;j<=i*2-1;j++){ System.out.print("*"); } System.out.println(); } } }

注意:外循环执行一次,内循环全部执行完

七、累加思想(1–100的和)

int sum=0 for(int i=1;i<=100;i++){ sum=sum+i; //新的苹果的总是=旧的苹果的总数+增量 } System.out.println(sum); int sum=0//初始化sum=0 当i=1 sum=0(前一个sum的值0)+1 (增量) //1 当i=2 sum=1(i=1时sum的总和1)+2(增量) //3 当i=3 sum=3(i=2时sum的总和3)+3(增量) //6 当i=4 sum=6(i=3时sum的总和6)+4(增量) //10 当i=5 sum=10(i=4时sum的总和10)+5(增量) //15 ... 当i=99 sum=(98次之和)+99 当i=100 sum=(99次之和)+100

八、课后作业练习

package com.homework; /*1.现在有一个银行保险柜,有两道密码。 想拿到里面的钱必须两次输入的密码都要正确。 如果第一道密码都不正确,那直接把你拦在外面; 如果第一道密码输入正确,才能有权输入第二道密码。 只有当第二道密码也输入正确,才能拿到钱! (两道密码自己设)(嵌套if)*/ import java.util.*; public class Hw1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入密码:"); int password1=sc.nextInt(); if(password1==123){ System.out.println("恭喜你,打开了第一道密码"); System.out.println("请继续输入密码:"); int password2=sc.nextInt(); if(password2==456) { System.out.println("恭喜你,可以取钱了!"); }else { System.out.println("对不起,请重新输入.."); } }else { System.out.println("对不起,请重新输入.."); } } } //运行结果: 请输入密码: 123 恭喜你,打开了第一道密码 请继续输入密码: 456 恭喜你,可以取钱了! package com.homework; /*2.分析以下需求,并用代码实现:(用switch实现) 1.功能描述:键盘录入月份,输出对应的季节 2.要求: (1)键盘录入一个整数(代表月份,范围1-12) (2)输出该月份对应的季节 3,4,5春季 6,7,8夏季 9,10,11秋季 12,1,2冬季 (3)演示格式如下: 请输入一个月份:3 控制台输出:3月份是春季*/ import java.util.*; public class Hw2 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入月份(必须使用数字)"); int num=sc.nextInt(); switch (num){ case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; case 12: case 1: case 2: System.out.println("冬季"); break; } } } //运行结果: 请输入月份(必须使用数字) 1 冬季 package com.homework; /*3、循环输出1到100之间的所有偶数*/ public class Hw3 { public static void main(String[] args) { for(int i=1;i<=100;i++){ if(i%2==0){ System.out.println(i); } } } } package com.homework; /*4.输出1900-2012的所有闰年 提示:定义一个int类型变量 year year%4==0&&year%100!=0||year%400==0 时,year是闰年*/ public class Hw4 { public static void main(String[] args) { for(int year=1900;year<=2012;year++){ if((year%4==0&&year%100!=0)||year%400==0){ System.out.println(year+"是闰年"); } } } } //运行结果: 1904是闰年 1908是闰年 1912是闰年 1916是闰年 1920是闰年 1924是闰年 1928是闰年 1932是闰年 1936是闰年 1940是闰年 1944是闰年 1948是闰年 1952是闰年 1956是闰年 1960是闰年 1964是闰年 1968是闰年 1972是闰年 1976是闰年 1980是闰年 1984是闰年 1988是闰年 1992是闰年 1996是闰年 2000是闰年 2004是闰年 2008是闰年 2012是闰年 package com.homework; /*5.输出10000-99999里面的所有回文数。 说明:即12321是回文数,个位与万位相同, 并且十位与千位相同。*/ public class Hw5 { public static void main(String[] args) { for(int i=10000;i<=99999;i++){ int ge=i/1%10; int shi=i/10%10; int bai=i/100%10; int qian=i/1000%10; int wan=i/10000%10; if(ge==wan&&shi==qian){ System.out.println("回文数:"+i); } } } } package com.homework; /*6,打印100至999的水仙花数和个数 (水仙花数是一个三位数,各位数字的立方和等于该数本身); 例如:153=1*1*1+5*5*5+3*3*3是一个水仙花数*/ public class Hw6 { public static void main(String[] args) { for(int i=100;i<=999;i++){ int ge=i/1%10; int shi=i/10%10; int bai=i/100%10; if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){ System.out.println("水仙花数:"+i); } } } } //运行结果: 水仙花数:153 水仙花数:370 水仙花数:371 水仙花数:407 package com.homework; /*7,求1---100的偶数的和? a%2==0偶数*/ public class Hw7 { public static void main(String[] args) { int sum=0; for(int i=1;i<=100;i++){ if(i%2==0){ sum=sum+i; } } System.out.println(sum); } } //运行结果: 2550 package com.homework; /*8.计算1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10=? 提示: 分子永远是1,分母是1--10*/ public class Hw8 { public static void main(String[] args) { float sum=0; for(int i=1;i<=10;i++){ sum=sum+(float) (1.0/i); } System.out.println(sum); } } //运行结果: 2.9289684 package com.homework; /*9.循环键盘录入5个学生的成绩,将这5个学生的成绩累加,最后输出结果。*/ import java.util.*; public class Hw9 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int sum=0; for(int i=1;i<=5;i++){ System.out.println("请输入第"+i+"个学生的成绩"); int score=sc.nextInt(); sum=sum+score; } System.out.println("5个学生的成绩总和:"+sum); } } //运行结果: 请输入第1个学生的成绩 1 请输入第2个学生的成绩 2 请输入第3个学生的成绩 3 请输入第4个学生的成绩 4 请输入第5个学生的成绩 5 5个学生的成绩总和:15 package com.homework; /*10.2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?*/ public class Hw10 { public static void main(String[] args) { double person=8; int i=0; //i用于统计年数 while(person<=20){ i++; person = person * (1 + (1.0 / 4)); } System.out.println("第"+i+"年人数达到20万人"); } } //运行结果: 第2011年人数达到20万人 package com.homework; /* 11.计算2000年的1月1到2008年的1月1日之间相隔有多少天。 (提示年有365天,润年有366天,循环从2000年到2008年结束)*/ public class Hw11 { public static void main(String[] args) { int i=0; int j=0; for(int year=2000;year<2008;year++){ if((year%4==0&&year%100!=0)||year%400==0){ i++; }else { j++; } } int days=i*366+j*365; System.out.println(days); } } //运行结果: 2922 package com.homework; /*12.计算2008年的1月1日,到2008年的9月1日相隔有多少天。 (提示:如果是润年的2月就有29天,平年的2月有28天。1、3、5、7、8*/ public class Hw12 { public static void main(String[] args) { int year=2008; int days=0; if((year%4==0&&year%100!=0)||year%400==0){ for (int month=1;month<9;month++){ switch (month){ case 1: case 3: case 5: case 7: case 8: days=days+31; break; case 2: days=days+29; break; case 4: case 6: days=days+30; break; } } }else { for (int month=1;month<9;month++){ switch (month){ case 1: case 3: case 5: case 7: case 8: days=days+31; break; case 2: days=days+28; break; case 4: case 6: days=days+30; break; } } } System.out.println(days); } } //这个程序可以继续优化 //运行结果: 244
最新回复(0)