流程控制语句
switch语句
/*
switch语句:
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;(可写可不写,建议写上)
}
表达式:取值范围为byte,short,int,char,JDK5以后可以用枚举,JDK7以后可以用String
case:后面跟的是要和表达式进行比较的值
break:表示中断,结束的意思,用来结束switch语句
default:所有情况都不匹配时,执行该处内容
执行流程:
1.首先计算表达式的值
2.依次和case后面的值进行比较,如果匹配就执行语句体,遇见break结束
3.所有情况都不匹配时,执行default的内容.
注意:swich用于判断两个数据之间是否相等时相对于if语句可能较简单一点,但是swich只能用于这种情况.
所以,能用swich就一定能用if,能用if不一定就能用swich
*/
//导包
import java.util.Scanner;
public class Demo01{
public static void main(String[] args){
System.out.println("请输入一个星期数(1-7):");
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
int week = sc.nextInt();
switch(week){
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;
default:
System.out.println("输入星期数有误");
break;
}
System.out.println("结束");
}
}
春夏秋冬
/*
春夏秋冬:一年有12个月,分为春夏秋冬四个季节.键盘输入一个月份,判断是哪个季节,并输出
3-5:春季
6-8:夏季
9-11;秋季
12-2;冬季
注意:case穿透 在switch语句中,如果case控制的语句体后面不写break,将出现穿透现象,
在不判断下一个case值得情况下,向下运行,直到遇到break,或者整个switch语句结束
*/
//导包
import java.util.Scanner;
public class Demo02{
public static void main(String[] args){
System.out.println("请输入月份(1-12):");
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
int month = sc.nextInt();
//case穿透
switch(month){
case 1:
case 2:
case 12:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
//default不仅仅只能放在case下面
default:
System.out.println("输入月份有误");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
}
System.out.println("结束");
}
}
循环结构
循环结构特征:重复做某件事情,具有明确的开始和停止标志
循环结构组成:
1.初始化语句:用于表示循环开启的起始状态
2.条件判断语句:用于表示循环反复执行的条件
3.循环体语句:用于表示循环反复执行的内容
条件控制语句:用于便是循环执行中每次变化的内容
循环结构对应的语法:
1.初始化语句:可以是一条或者多条语句
2.条件判断语句:使用结果值为boolean类型的表达式
3.循环体语句:任意语句,语句将被反复执行
条件控制语句:改变变量的值,控制循环是否继续向下执行,常见i++,i–
for循环语句
/*
for循环语句
格式:
for(初始化语句;条件判断语句;条件控制语句){
循环语句;
}
*/
public class Demo03{
public static void main(String[] args){
for(int i = 0;i < 5;i++){
System.out.println("HelloWorld");
}
}
}
数据输出
/*
数据输出
在控制台输出1-5,5-1
*/
public class Demo04{
public static void main(String[] args){
for(int i = 1;i < 6;i++){
int j = 6;
//将i的值累减到j上
j -= i;
System.out.println(i + "," + j);
}
}
}
求和
/*
求和:求1-5之间的数据和,并输出
*/
public class Demo05{
public static void main(String[] args){
int sum = 0;
for(int i = 1;i < 6;i++){
//将i的值累加到sum上
sum += i;
}
//循环结束,打印数据
System.out.println(sum);
}
}
求偶数和
/*
求偶数和:求1-100之间的偶数和,并输出
*/
public class Demo06{
public static void main(String[] args){
int sum = 0;
for(int i = 1;i <= 100;i++){
//判断一下i是不是偶数
if(i % 2 == 0){
//将i的值累加到sum上
sum += i;
}
}
//循环结束,打印数据
System.out.println(sum);
}
}
水仙花数
/*
水仙花数:在控制台输出所有的"水仙花数"
什么是水仙花数:水仙花是一个三位数,水仙花的个位,十位,百位的数字立方和等于原数
*/
public class Demo07{
public static void main(String[] args){
for(int i = 100;i <= 999;i++){
//定义个位数
int a = i % 10;
//定义十位数
int b = i / 10 % 10;
//定义百位数
int c = i / 100 % 10;
//判断一下i是不是水仙花数
if(a*a*a + b*b*b + c*c*c == i){
//输出这个水仙花数
System.out.println(i);
}
}
}
}
统计
/*
统计:统计"水仙花"一共多少个,并在控制台输出个数
什么是水仙花:水仙花是一个三位数,水仙花的个位,十位,百位的数字立方和等于原数
*/
public class Demo09{
public static void main(String[] args){
int count = 0;
for(int i = 100;i <= 999;i++){
//定义个位数
int a = i % 10;
//定义十位数
int b = i / 10 % 10;
//定义百位数
int c = i / 100;
//判断一下i是不是水仙花数
if(a*a*a + b*b*b + c*c*c == i){
//如果i是水仙花数count就+1
count++;
}
}
//循环结束,打印count输出水仙花数
System.out.println("水仙花数一共有" + count + "个");//四个
}
}
while循环语句
/*
while循环语句
基本格式:
while(条件判断语句){
循环语句体;
}
完整格式:
初始化语句;
while(条件判断语句){
循环语句体;
条件控制语句;
}
执行过程:
1.执行初始化语句
2.执行条件判断语句,如果结果为false,循环结束,如果结果是true,继续执行
3.执行循环体语句
4.执行条件控制语句
5.回到2继续
*/
public class Demo10{
public static void main(String[] args){
//初始化语句
int i = 0;
//条件判断语句
while(i<5){
//循环语句体
System.out.println("HelloWorld");
//条件控制语句
i++;
}
}
}
珠穆朗玛峰
/*
珠穆朗玛峰:珠穆朗玛峰(8844.43米--8844430毫米),假如有一张纸,厚度为0.1毫米,
折叠多少次可以折成珠穆朗玛峰的高度
*/
public class Demo11{
public static void main(String[] args){
//初始化语句
double i = 0.1;
int count = 0;
//条件判断语句
while(i<=8844430){
//没折叠一次,纸张厚度加倍
i *= 2;
//累加,对应折叠了多少次
count++;
}
System.out.println("要折叠" + count + "次");//27次
}
}
水仙花数-while版
/*
用while输出所有水仙花数,并统计个数
*/
public class Demo14{
public static void main(String[] args){
//初始化语句
int i = 100;
int count = 0;
//条件判断语句
while(i<1000){
//个位数
int a = i % 10;
//十位数
int b = i / 10 % 10;
//百位数
int c = i / 100;
//判断是否满足水仙花数条件
if(a*a*a + b*b*b + c*c*c == i){
System.out.println("水仙花数:" + i);
//满足条件水仙花数 + 1;
count++;
}
//条件控制语句
i++;
}
System.out.println("水仙花个数:" + count);
}
}
do…while循环语句
/*
do...while循环语句
基本格式:
do{
循环体语句;
}while(条件判断语句);
完整格式:
初始化语句
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
执行流程:
1.执行初始化语句
2.*执行循环体语句*
3.执行条件控制语句
4.执行条件判断语句,如果结果为false,循环结束,如果结果是true,继续执行
5.回到2继续
*/
public class Demo12{
public static void main(String[] args){
//初始化语句
int i = 0;
do{
//循环语句体
System.out.println("HelloWorld");
//条件控制语句
i++;
}while(i<5);//条件判断语句
}
}
三种循环的区别
/*
三种循环语句的区别
for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
for和while区别
条件控制语句所控制的自增变量归属for循环语法结构中,在for循环结束后,不能被访问
条件控制语句所控制的自增变量不归属while循环语法结构中,在while循环结束后,不能被访问
命令提示符窗口Ctrl + C可以结束死循环
*/
public class Demo13{
public static void main(String[] args){
/*
//for循环
for(int i = 0;i < 0;i++){
System.out.println("HelloWorld");//不会输出"HelloWorld"
}
System.out.println("==========");
//while循环
int j = 0;
while(j<0){
System.out.println("HelloWorld");//不会输出"HelloWorld"
j++;
}
System.out.println("==========");
//do...while循环
int k = 0;
do{
System.out.println("HelloWorld");//会输出一次"HelloWorld"
k++;
}while(k<0);
*/
System.out.println("==========");
/*
//for循环
for(int i = 0;i < 3;i++){
System.out.println("java");
}
System.out.println(i);//报错,i归属for循环语法结构中,在for循环结束后,不能被访问
System.out.println("==========");
//while循环
int j = 0;
while(j<3){
System.out.println("java");
j++;
}
System.out.println(j);//不报错,会输出结果3,j不归属while循环语法结构中,在while循环结束后,仍能被访问
System.out.println("==========");
*/
System.out.println("==========");
/*死循环
//for死循环格式
for(;;){
System.out.println("java");
}
System.out.println("==========");
//while死循环格式
int j = 0;
while(true){
System.out.println("java");
j++;
}
System.out.println("==========");
//do...while死循环格式
int k = 0;
do{
System.out.println("HelloWorld");
k++;
}while(true);
*/
}
}
跳转控制语句
/*
跳转控制语句
continue:用在循环中,基于条件控制下,"跳过某次"循环体内容的执行,继续执行下一次的执行
break:用在循环中,基于条件控制下,"终止"循环体内容的执行,结束整个循环
*/
public class Demo15{
public static void main(String[] args){
for(int i = 1;i <= 5;i++){
if(i % 2 == 0){
}
System.out.println(i);//结果为1,2,3,4,5
}
System.out.println("========");
for(int i = 1;i <= 5;i++){
if(i % 2 == 0){
continue;
}
System.out.println(i);//结果为1,3,5
}
System.out.println("========");
for(int i = 1;i <= 5;i++){
if(i % 2 == 0){
break;
}
System.out.println(i);//没有输出结果
}
}
}
循环嵌套
/*
循环嵌套
任何语句对外都可以看成是一句话,一句代码
分支语句中包含分支语句称为分支嵌套
循环语句中包含循环语句称为循环嵌套
在控制台输出一天的小时和分钟
分钟:0 <= minute <60
小时:0 <= hour <24
*/
public class Demo16{
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 + "分");
}
}
}
}
Random 随机数
/*
Random:产生一个随机数
步骤:
1.导包:import java.util.Random;
2.创建对象:Random r = new Random();
3.获取随机数:int i = r.nextInt(数据范围);
*/
import java.util.Random;
public class Demo17{
public static void main(String[] args){
Random r = new Random();
//取十个随机数
for(int i = 0;i < 10;i++){
//取值范围是0 - 9,
int number = r.nextInt(10);//nextInt(必须大于0)
System.out.println("产生的随机数是:" + number);
}
System.out.println("=============");
//取一个1-100的随机数
int k = r.nextInt(100) + 1;//r.nextInt(100)取值范围是:0 - 99; + 1取值范围即为1 - 100
System.out.println("1-100的随机数是:" + k);
System.out.println("=============");
//生成任意范围的随机数公式:int zhi = r.nextInt(范围最大值 - 范围最小值 + 1) + 范围最小值;
for(int i = 0;i < 10;i++){
int m = r.nextInt(50 - 20 + 1) + 20;//例如:取值(20 - 50)
System.out.println("产生的随机数是:" + m);
}
}
}
猜数字
/*
猜数字:生成一个1 - 100的随机数,实现猜出这个数字是多少
当猜的数字比生成的数字大时,提示你猜大了
当猜的数字比生成的数字小时,提示你猜小了
当猜的数字与生成的数字相等时,提示恭喜你,猜对了
当猜的数字超出随机数取值范围时,提示输入有误
*/
//导包
import java.util.Random;
import java.util.Scanner;
public class Demo18{
public static void main(String[] args){
//创建Scanner对象
Scanner sc = new Scanner(System.in);
//创建Random对象
Random r = new Random();
//生成1 - 100的随机数
int s = r.nextInt(100) + 1;
while(true){
System.out.print("你猜的数是(1 - 100):");
//接收数据
int number = sc.nextInt();
//判断你猜数的大小
if(number > s && number < 101){
System.out.println("你猜大了");
}else if(number < s && number > 0){
System.out.println("你猜小了");
}else if(number == s){
System.out.println("恭喜你,猜对了");
//跳出循环
break;
}else{
System.out.println("输入有误");
}
}
}
}
作业
第一题:分析以下需求并实现
1.想在控制台输出2次:"HelloWorld" 括号()里面应该填写什么?
2.想在控制台输出7次:"HelloWorld" 括号()里面应该填写什么?
3.想在控制台输出13次:"HelloWorld" 括号()里面应该填写什么?
public class Test01 {
public static void main(String[] args) {
for(int x=1; x<=10; x++) {
if(x%3==0) {
//()在此处填写代码
}
System.out.println("HelloWorld");
}
}
}
第二题:分析以下需求并实现
1.打印1到100之内的整数,但数字中包含9的要跳过
2.每行输出5个满足条件的数,之间用空格分隔
3.如:1 2 3 4 5
第三题:分析以下需求,并用代码实现:
1.按照从大到小的顺序输出四位数中的个位+百位=十位+千位 的数字及个数
2.每行输出5个满足条件的数,之间用空格分隔
3.如:9999 9988 9977 9966 9955
第四题:
打印四行五列的星星
*****
*****
*****
*****
以上题目,明天公布答案