数据输入,三个和尚升级:增加数据输入
/* 三个和尚升级版,加入输入功能*/import java.util.Scanner;public class heshangshengji { public static void main(String[] args) { //用键盘录入身高,首先导包 Scanner sc = new Scanner(System.in); //键盘录入三个身高分别赋值给三个变量; System.out.println("请输入第一个和尚身高:"); int height1 = sc.nextInt(); System.out.println("请输入第二个和尚身高:"); int height2 = sc.nextInt(); System.out.println("请输入第三个和尚身高:"); int height3 = sc.nextInt(); //用三元运算符获取前两个身高最高值,并用临时变量保存 int tempHeight = height1 > height2 ? height1 : height2; //用算远运算符获取临时身高和第三个和尚身高,并保存在最大身高变量 int maxHeight = tempHeight > height3 ? tempHeight : height3; //输出结果 System.out.println("maxHeight:" + maxHeight); }}
java中的顺序结构:语句的执行顺序流程
java中的结构大致分为三种
1.顺序结构:按照代码顺序依次执行
2.分支结构(if,switch)
3.循环结构(for,while,do...while)
if语句的第一种:这种只能判断一种情况
/* if语句格式1 if (关系表达式) { 语句体; } 执行流程: 1.首先计算关系表达式的值 2.如果关系表达式的值为t就执行语句体 3.如果关系表达式的值为f就不执行语句体 4.继续执行后面的语句内容*/public class ifyuju1 { public static void main(String[] args) { System.out.println("开始"); //定义两个变量 int a = 10; int b = 20; //需求:判断a、b是否相等,如果相等,就在控制台输出:a等于b if(a == b) { System.out.println("a等于b"); } //需求:判断a、c是否相等,如果相等,就在控制台输出:a等于c int c = 10; if(a == c) { System.out.println("a等于c"); } System.out.println("结束"); }}
if语句的第二种:lf...else 可以判断多于1种的情况
/* if语句格式2 if (关系表达式) { 语句体1; } else { 语句体2; } 执行流程: 1.首先计算关系表达式的值 2.如果关系表达式的值为t就执行语句体1 3.如果关系表达式的值为f就不执行语句体2 4.继续执行后面的语句内容*/public class ifyuju2 { public static void main(String[] args) { System.out.println("开始"); //定义两个变量 int a = 10; int b = 20; // b=5;这句就直接修改了b的值 //需求:判断a是否大于b,如果是,就在控制台输出:a大于b,反之输出:a不大于b if(a > b) { System.out.println("a大于b"); } else { System.out.println("a不大于b"); } System.out.println("结束"); }}
判断是否是奇偶数
/* 判断是否是奇偶数 需求:任意输入一个整数,在控制台输出该整数是奇数还是偶数*/import java.util.Scanner;//输入的第一步导包public class Jioushu { public static void main(String[] args) { Scanner sc = new Scanner(System.in);输入的第二步创建对象 System.out.println("请输入一个整数:" ); int number = sc.nextInt(); //输入的第三步接收数据 //判断是否是偶数需要用到取余运算符 number % 2 == 0 if(number%2 == 0) { System.out.println(number + "是偶数" ); } else { System.out.println(number + "是奇数" ); } }}
if语句第三种
if...else if...else可对多种情况进行判断
/* if语句格式3 if (关系表达式1) { 语句体1 } else if (关系表达式2) { 语句体2 } ... else { 语句体n+1 } 执行流程: 1.首先计算关系表达式1的值 2.如果为t就执行语句体1,如果为f就执行关系表达式2的值 3.如果为t就执行语句体2,如果为f就执行关系表达式3的值 4... 5.如果没有如何关系表达式为t,就执行语句体n+1 */ import java.util.Scanner; public class Ifyuju3 { public static void main (String[] args) { System.out.println("开始"); //需求:键盘录入一个星期数(1,2,3,。。。7),输出对应的星期一,星期二 Scanner sc = new Scanner(System.in); System.out.println("输入一个星期数(1-7):"); int week = sc.nextInt(); if(week == 1) { System.out.println("星期一"); } else if(week == 2){ System.out.println("星期二"); } else if(week == 3) { System.out.println("星期三"); } else if(week == 4) { System.out.println("星期四"); } else if(week == 5) { System.out.println("星期五"); } else if(week == 6) { System.out.println("星期六"); } else { System.out.println("星期天"); } System.out.println("结束"); } }
分支结构switch
案例:输入1-7,输出相应的星期数
/* 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:表示情况都不匹配时,就执行该处内容,和if语句的else相似。 执行流程: 首先计算表达式的值 依次和case后面的值进行比较,如果有对应的值,就会执行相应语句,执行过程中遇到break就会结束 如果所有case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后程序结束*/import java.util.Scanner;public class Switch { public static void main(String[] args) { System.out.println("开始"); //需求:键盘录入一个星期数(1,2,3,。。。7),输出对应的星期一,星期二 Scanner sc = new Scanner(System.in); System.out.println("输入一个星期数(1-7):"); 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("结束"); }}
案例:季节输出,输入月份数字,输出对应季节
用到了case穿透,例如1,2,12月输出都是冬季,所以简洁表达用到了case穿透
import java.util.Scanner;public class JIjie { public static void main(String[] args) { System.out.println("开始"); //case穿透来表达月份代表的季节 Scanner sc = new Scanner(System.in); System.out.println("输入一个月份:"); int week = sc.nextInt(); switch(week) { case 1: case 2: case 12: System.out.println("冬季"); break; case 4: case 5: case 3: System.out.println("春季"); break; case 8: case 7: case 6: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; default: //当default在最后时,后面的break可省略 System.out.println("输入数字有误"); } System.out.println("结束"); }}
3.循环结构
1.for循环
/* for语句 格式: for(初始化语句;条件判断语句;条件控制语句){ 循环体语句; } 执行流程: 1.执行初始化语句 2.执行条件判断语句,看结果时t还是f 如果是f循环结束 如果是t,继续执行 3.执行循环体语句 4.执行条件控制语句 5.回到2继续*/public class Forxunhuan { public static void main(String[] args) { //需求:在控制台输出5次 Helloworld for(int i=1; i<=5; i++) { System.out.println("Helloworld"); } }}
/* 输出数据 需求控制台输出1——5,5——1*/public class SHUjushuru31 { public static void main(String[] args) { //需求输出1——5 for(int i=1;i<=5;i++) { System.out.println(i); } //需求输出5——1 for(int i=5;i>=1;i--) { System.out.println(i); } }}
案例:求和,求1到5的数据和
/* 求和 需求:求1——5的数据和,并且有控制台输出*/public class qiuhe { public static void main(String[] args){ //求和的最终结果必须要保存起来,需要定义一个变量,用于保存求和结果,初始值0 int sum = 0; //从1开始到5结束,使用循环结构完成 for(int i=1;i<=5;i++) { //将反复进行的事情写入循环结构内部,此处反复进行的事情是将数据i加到用于保存最终的求和变量sum中 sum +=i; /* sum +=i相当于 sum = sum+i 第一次:sum = sum+i=0+1=1; 第二次:sum = sum+i=1+2=3; 第三次:sum = sum+i=3+3=6; */ } //当执行完毕时,将最终结果打印出来 System.out.println("1——5的数据和是:" + sum); }}
案例:求1到100的偶数和
/* 求1到100的偶数和*/public class JIouqiuhe { public static void main(String[] args) { int sum =0; for(int i =1;i<=100;i++) { if(i%2 == 0) { //对100内的偶数求和,需要对求和操作 sum +=1; } } //循环结束,输出 System.out.println("100以内偶数和:" + sum); }}
案例:输出水仙花
特点要输出个位,十位,百位上的数字
/* 水仙花 需求: 1.在控制台输出所有水仙花数 2.统计水仙花个数*/public class SHUIxianhua { public static void main(String[] args) { //定义变量count,用于保存水仙花数的数量,初始值为0 int count = 0; //输出水仙花必然用到循环,遍历所有三位数,从100开始到999结束 /*for(int i=100; i<=999; i++) { } i<=999;和i<1000两种效果一样 */ for(int i=100; i<1000; i++) { //计算之前获取三位数每个位上的值 int ge = i%10; int shi = i/10%10; //先对10整除结果再对10取余得到十位上的数字 int bai = i/10/10%10; //判定条件是将三位数中每个数值取出,计算立方和与原始数字比较是否相等 if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { //如果满足条件做count++ count++; //输出满足条件数字就是水仙花 System.out.println(i); } } //打印出水仙花数量 System.out.println("水仙花共有" + count + "个"); }}
2.while循环
/* While循环 基本格式 while(条件判断语句) { 循环体语句; } 完整格式 初始化语句; while(条件判断语句) { 循环体语句; 条件控制语句; } 执行流程: 1.执行初始化语句 2.执行条件判断语句,看结果是t还是f 如果是f循环结束 如果是t继续执行 3.执行循环体语句 4.执行条件控制语句 5.回到2继续*/public class Whilexunhuan { public static void main(String[] args) { //需求输出5次helloworld //用for循环写 for(int i=1; i<=5; i++) { //条件控制语句 System.out.println("helloworld"); //循环体语句 } System.out.println("************"); //用while实现 int j =1; while(j<=5) { System.out.println("helloworld"); j++; } }}
案例:折叠纸张达到珠峰高度
不知道折叠多少次,所以适合用while循环
/* 纸张对折多少次厚度达到珠峰高度,每对折一次厚度是原来两倍*/public class ZHUMUfeng { public static void main(String[] args) { //定义一个计数器,初始值为0 int count =0; //定义纸张厚度 double paper = 0.1; //定义珠峰高度 int zf = 8844430; //折叠纸张,不知道折叠多少次,所以适合用while循环 //折叠过程中纸张厚度大于珠峰高度就停止,因此继续执行的要求就是纸张厚度小于珠峰高度 while(paper <= zf) { //循环的执行过程每次折叠纸张,纸张厚度加倍 paper *=2; //在循环中累加,对应折叠了多少次 count++; } //打印计数器值 System.out.println("需要折叠"+ count+"次"); }}
3.do...while循环
/* do while语句格式 do{ 循环体语句; }while(条件判断语句); 完整格式: 初始化语句 do{ 循环体语句; 条件控制语句; }while(条件判断语句); 执行流程: 1.执行初始化语句 2.执行循环体语句 3.执行条件控制语句 4.执行条件判断语句,看结果是t还是f 如果是f,循环结束 如果是t,继续执行 5.回到2继续*/public class DOwhile { public static void main(String[] args) { //需求输出5次helloworld for(int i = 1;i<=5;i++) { System.out.println("helloworld"); } System.out.println("**********"); //用do while循环 int j =1; do{ System.out.println("helloworld"); j++; }while(j<=5); }}
三种循环区别