第四天老师讲了一天的循环语句还有昨天剩下的switch判断语句。
switch语句
格式
switch(表达式){
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
……
default:
执行语句;
}
switch语句特点:
1,switch语句选择的类型只有四种:byte,short,int ,char。
2,case之间与default没有顺序。先判断所有的case,没有匹配的case执行
default。
3,switch语句停止的条件是遇到了break关键字或者结束switch语句的大括号。
4,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运
行可以执行的语句,直到遇到break或者switch结尾结束。
5,switch case中的值必须要与switch表达式的值具有相同的数据类型。而且case后跟的值必须是常量,不能跟变量。
case 就像选择题的答案之一。 break 就是如果该答案正确那么就可以跳出switch 了,意思就是说 已经找出了正确的答案了。那么这道题也就做完了。如果 case 没有匹配接着进行下一个case 匹配,直到匹配为止。 最后如果都没有匹配上,那么 switch 给提供了一个默认的答案,就是 default。
注意: case后跟的是冒号:
每个case中的执行语句一定要加break;
For循环语句
for(初始化表达式; 循环条件; 操作表达式){
执行语句
………
}
在上面的语法结构中,for关键字后面()中包括了三部分内容:初始化表达式、循环条件和操作表达式,它们之间用“;”分隔,{}中的执行语句为循环体。
接下来分别用①表示初始化表达式、②表示循环条件、③表示操作表达式、④表示循环体,通过序号来具体分析for循环的执行流程。具体如下:
for(① ; ② ; ③){
④
}
第一步,执行①
第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步
第三步,执行④
第四步,执行③,然后重复执行第二步
第五步,退出循环
案例1
1-100的打印
案例2
求1-5之间的整数的和 sum = 1+2+3+4+5
int sum = 0 ;
for(int i=1;i<=5;i++){
sum += i ; // sum = sum + i ;
System.out.println(sum);
}
System.out.println(sum);
案例3
输出10-1的数据
for(int i=10 ; i>=1;i-- ){
System.out.println(i);
}
案例4
求1-100的奇数 偶数的和。
// 分析 偶数就是能被2整除的数 即:如果n%20 就是偶数 除了偶数就是奇数
int sumo = 0;
int sumj = 0;
for(int i=1;i<=100;i++){
if(i%20){ //求偶数
sumo += i;
}else{ //除了偶数就是奇数
sumj += i;
}
}
System.out.println("偶数和:"+sumo);
System.out.println("奇数和:"+sumj);
案例5
1-50当中能被3整除的数和
int ss = 0;
for(int i=1;i<=50;i++){
if(i%30){
ss +=i;
}
}
System.out.println(ss);
案例6
求出 1-100当中既能被3整除又能被5整除还能被2整除的和
int summ = 0 ;
for(int i=1;i<=100;i++){
if(i%30 && i%50 && i%20 ){
summ +=i;
}
}
System.out.println("1-100当中既能被3整除又能被5整除还能被2整除的和 "+summ);
注意事项
a:判断条件语句无论简单还是复杂,结果是boolean类型
b:循环体语句如果是一条,可以省略大括号,但是不建议
c:有分号就没有左大括号,有左大括号就没有分号
循环语句while
while循环语句和选择结构if语句有些相似,都是根据条件判断来决定是否执行大括号内的执行语句。区别在于,while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。while循环语句的语法结构如下:
while(循环条件){
执行语句
………
}
接下来通过一段代码,来实现打印1~4之间的自然数,WhileDemo.java
public class WhileDemo {
public static void main(String[] args) {
int x = 1; // 定义变量x,初始值为1
while (x <= 4) { // 循环条件
System.out.println("x = " + x); // 条件成立,打印x的值
x++; // x进行自增
}
}
}
运行结果
案例
for和while的区别
理解上的区别
for适合于一个范围的判断,明确循环次数
while适合次数不明确的
循环语句do…while
do…while循环语句和while循环语句功能类似,其语法结构如下:
do {
执行语句
………
} while(循环条件);
在上面的语法结构中,关键字do后面{}中的执行语句是循环体。do…while循环语句将循环条件放在了循环体的后面。这也就意味着,循环体会无条件执行一次,然后再根据循环条件来决定是否继续执行。
接下来使用do…while循环语句来实现打印1~4之间的自然数DoWhileDemo.java。
public class DoWhileDemo {
public static void main(String[] args) {
int x = 1; // 定义变量x,初始值为1
do {
System.out.println("x = " + x); // 打印x的值
x++; // 将x的值自增
} while (x <= 4); // 循环条件
}
}
我们发现WhileDemo.java与DoWhileDemo.java运行的结果一致,这说明什么呢?这说明do …while循环和while循环能实现同样的功能。然而在程序运行过程中,这两种语句还是有差别的。如果循环条件在循环语句开始时就不成立,那么while循环的循环体一次都不会执行,而do…while循环的循环体还是会执行一次。若将DoWhileDemo.java中的循环条件x<=4改为x < 1,DoWhileDemo.java运行结果会打印x=1,而WhileDemo.java运行结果什么也不会打印。
三种循环的区别
a:do…while循环至少执行一次循环体
b:for和while必须先判断条件是否为true,然后才能决定是否执行循环体
最后是综合案例
算是这4天来的一大总结
案例介绍
我们在日常生活中,经常与朋友们玩猜数字的游戏,非常的有趣。现在我们通过java把这个猜数字游戏编写出来。
猜数字案例是要完成什么样的功能呢?顾名思义,这个游戏就是你出个数字、我来猜。
游戏操作如下:
后台预先生成一个1-100之间的随机数,用户键盘录入猜数字
如果猜对了,打印“恭喜您,答对了”
如果猜错了
猜大了:打印“sorry,您猜大了!”
猜小了:打印“sorry,您猜小了!”
直到数字猜到为止
在案例开始之前,我们先要学习如下知识点:
随机数类Random
选择结构if
循环结构while
案例需求分析
猜数字案例的需求如下:
后台预先生成一个1-100之间的随机数,用户键盘录入猜数字
如果猜对了,打印“恭喜您,答对了”
如果猜错了
猜大了:打印“sorry,您猜大了!”
猜小了:打印“sorry,您猜小了!”
直到数字猜到为止
我们经过分析,得出如下的分析结果:
1.通过Random类中方法nextInt(),生成一个1-100之间的随机数
2.输入猜的数字
3.通过while循环,进行猜数字对错判断
猜对,跳出循环,游戏结束
猜错了,根据结果,给出提示,接着猜数字,游戏继续
如果猜大了,打印sorry,您猜大了!继续下一次循环
如果猜小了,打印sorry,您猜小了!继续下一次循环
实现代码步骤
分析完毕之后,在main()方法中,我们一起来完成代码的编写:GuessNumber.java
public class GuessNumber {
public static void main(String[] args) {
//1.通过Random类中方法nextInt(),生成一个1-100之间的随机数
int randomNumber = new Random().nextInt(100);
System.out.println(“随机数已生成!”);
//2.输入猜的数字
System.out.println("----请输入您猜的数字:----");
Scanner sc = new Scanner(System.in);
int enterNumber = sc.nextInt();
//3.通过while循环,进行猜数字对错判断
//猜对,跳出循环,游戏结束
while(enterNumber != randomNumber){
//猜错了,根据结果,给出提示,接着猜数字,游戏继续
if(enterNumber>randomNumber) {
//如果猜大了,打印sorry,您猜大了!继续下一次循环
System.out.println(“sorry,您猜大了!继续下一次循环”);
}else {
//如果猜小了,打印sorry,您猜小了!继续下一次循环
System.out.println(“sorry,您猜小了!继续下一次循环”);
}
//输入猜的数字
System.out.println("----请输入您猜的数字:----");
enterNumber = sc.nextInt();
}
System.out.println(“恭喜您,答对了!”);
}
}
课程最后进行了总结
总结
知识点总结
选择结构 if
方式1:
格式:
if(条件表达式) {
语句体;
}
执行流程:
如果条件表达式值为true, 执行语句体
如果条件表达式值为false,不执行语句体
方式2:
格式:
if(条件表达式) {
语句体1;
} else {
语句体2;
}
执行流程:
如果条件表达式值为true, 执行语句体1
如果条件表达式值为fales,执行语句体2
方式3:
格式:
if(条件表达式1) {
语句体1;
} else if (条件表达式2) {
语句体2;
} else if (条件表达式n…) {
语句体n…
}
…
else {
语句体n+1;
}
执行流程:
哪一个条件表达式成立,执行对应的语句体,
如果所有的条件表达式都不成立,执行最后else中的语句体
注意事项:
1,条件表达式无论是简单还是复杂,结果都是boolean类型的值
2, 如果语句体只有一条语句,大括号可以省略,
如果是多条语句,大括号不能省略,建议什么时候都写上大括号
循环语句For
格式:
for (初始化表达式;条件表达式; 控制条件表达式) {
语句体;
}
执行流程:
1,初始化表达式;
2,条件表达式
如果结果为true, 执行语句体
如果结果为flase, 循环结束
3, 当语句体执行后, 执行控制条件表达式
4,接下来,回到第二步, 直到条件表达式为false 循环结束
循环语句 while
格式:
初始化表达式;
while (条件表达式) {
语句体;
控制条件表达式;
}
执行流程;
1,初始化表达式;
2,条件表达式
如果结果为true, 执行语句体
如果结果为flase, 循环结束
3, 当语句体执行后, 执行控制条件表达式
4,接下来,回到第二步, 直到条件表达式为false 循环结束跳转语句(break、continue)
循环语句 do…while
格式:
初始化表达式;
do {
语句体;
控制条件表达式;
} while (条件表达式);
执行流程:
1,初始化表达式;
2, 执行语句体
3, 执行控制条件表达式
4, 执行条件表达式,
如果结果为true, 继续执行语句体
如果结果为false, 循环结束
Scanner类
获取键盘录入的数据,对获取数据的具体操作进行了封装,只需要调用方法,即可得到键盘录入的数据。
常用的方法
public int nextInt():获取键盘录入的数据,返回int类型值
public String next():获取键盘录入的数据,返回String类型值
Random类:随机数类,用来产生多种类型的随机数
方法:
public int nextInt(int n) 返回一个,在 0(包括)和指定值(不包括)之间int随机数
以上Day4