Java三种流程控制语句简介
从结构化程序设计角度出发,一般使用顺序结构、分支结构、循环结构进行程序设计和流程控制。详细的使用方法如下。
顺序结构
顺序结构是程序的基本结构代码会由上而下的进行执行,中途不会出现判断或跳转。
案例:
public class ProcessControl {
public static void main(String[] args) {
System.out.println("早上八点起床吃了西红柿鸡蛋面");
System.out.println("中午在公司进行了项目需求分析会议修缮的一些程序的BUG、吃了一份可乐鸡饭没有午休");
System.out.println("晚上加班到很晚、也许这就是生活吧");
System.out.println("回家想想自己的工资,看了看房价。睡意全无,又开始了mysql的优化学习");
}
}
分支结构
开篇之前先来一个不是笑话的笑话。
【故事】老婆给当程序员的老公打电话:下班顺路买十个包子,如果看到卖西瓜的,买一个。当晚老公手捧一个包子进了家门。老婆怒道:你怎么只买一个包子?!老公甚恐,喃喃道:因为我真看到卖西瓜的了。
分支结构是程序设计中即为常用的。主要用于判断和选择。在Java中使用if 条件语句、switch选择语句进行流程控制。
if 条件语句
if的使用
介绍:可以对程序需要执行的代码进行条件限制。满足条件则执行,不满足则不执行。
语法
if(条件表达式){
//满足条件的执行语句
}
花括号中的内容,称为代码块,一个代码块会被当成一个整体来执行。
示例:
//如果年龄大于等于18输出海皮的语句 如果年龄小于18则输出回家学习吧!
int age;
//大于18
age=19;
if(age>=18) {
System.out.println("快来愉快的玩耍吧!");
}
//小于18
age = 17;
if(age<=18) {
System.out.println("回家学习!");
}
if else的使用
满足if里面的内容则执行if花括号内的语句。如果不满足则执行else花括号后面的内容。
语法:
if(条件表达式){
//满足条件的执行语句
}else{
//不满足条件执行
}
示例:
//如果年龄大于等于18输出海皮的语句 如果年龄小于18则输出回家学习吧!
int age=23;
int age2=16;
if(age>=18) {
System.out.println("快来愉快的玩耍吧!");
}else {
System.out.println("回家学习吧!");
}
if(age2>=18) {
System.out.println("快来愉快的玩耍吧!");
}else {
System.out.println("回家学习吧!");
}
if else if的使用
满足if里面的内容则执行if花括号内的语句。如果不满足继续判断else if内的条件满足则执行,不满足则继续向下判断,都不满足执行else花括号内的代码。
语法:
if(条件表达式){
//满足条件1的 执行语句
}else if{
//满足条件2的 执行语句
}else{
//不满足以上条件的执行
}
示例:
需求:成绩判断器 90-100优秀 80-89 良好 70-79中等 60-69 及格 60以下 不及格
//成绩判断器 90-100优秀 80-89 良好 70-79中等 60-69 及格 60以下 不及格
if(score>=90) {
System.out.println("优秀");
}else if(score>=80){
System.out.println("良好");
}else if(score>=70){
System.out.println("中等");
}else if (score>=60) {
System.err.println("及格");
}else {
System.out.println("不及格");
}
if条件语句的嵌套
if语句可以进行嵌套使用 即if语句内可与包含if语句
需求:百米赛跑案例 当选手赛跑成绩10秒内 可以进入总决赛 ,进入决赛后根据性别 分为男子组和女子组
示例:
//百米赛跑案例 当选手赛跑成绩10秒内 可以进入总决赛 ,进入决赛后根据性别 分为男子组和女子组
double grade = 9.0;
int sex=0; //0代表男 1代表女
if (grade < 10) {
System.out.println("进入决赛");
if(sex==0) {
System.out.println("进入男子组");
}else if(sex ==1 ) {
System.out.println("进入女子组");
}else {
System.out.println("数据有误");
}
}
判断闰年
1.能被4整除,但不能被100整除,就是闰年;
2.能被400整除,也是闰年
方案一:
int year =2000;
if(year % 4 == 0) {
if(year%100 != 0) {
System.out.println(year+"是闰年");
}else if(year % 400 ==0 ) {
System.out.println(year+"是闰年");
}else {
System.out.println(year+"不是闰年");
}
}else if(year % 400 ==0 ) {
System.out.println(year+"是闰年");
}else {
System.out.println(year+"不是闰年");
}
方案二:
int year =2000;
if( (year%4==0 && year%100 !=0) || year%400==0 ) {
System.out.println(year+"是闰年");
}else {
System.out.println(year+"不是闰年");
}
switch选择语句
语法:
switch (key) {
case value:
//执行语句
break;
default:
//执行语句
break;
}
在上面的格式中,switch语句将key的值与每个case中的目标值进行匹配,如果相等,会执行对应case后的语句,如果没找到任何匹配的值,就会执行default后的语句。switch语句中的break关键字的作用是跳出switch语句。
注意事项:
一、key代表的数据类型 只能是 int short byte char String 枚举
二、switch 只能用于做等值判断
三、default 顺序问题 他可以放到最上面的位置 注意放置位置不同会影响我们代码输出
四、default 可以被省略
五、 if 一般用于一定范围内的条件判断 switch 能完成的案例 if都能完成 但是if能完成案例 switch不一定完成 常用分支结构if if
switch (需求值){
case 目标值1:
执行语句1
break;
case 目标值2:
执行语句2
break;
......
case 目标值n:
执行语句n
break;
default:
执行语句n+1
break;
}
示例:
需求:超市进行购物大酬宾 购物满199元即可参与抽奖活动 一等奖奖励空调 二等奖奖励电视 三等奖奖励电饭煲 四等奖奖励精品茶具 五等奖奖励抽纸一盒
// switch选择语句
//超市进行购物大酬宾 购物满199元即可参与抽奖活动 一等奖奖励空调 二等奖奖励电视 三等奖奖励电饭煲 四等奖奖励精品茶具 五等奖奖励抽纸一盒
double money = 208.6;//购物费用
if(money>=199) {
int grade = 4;//奖励等级
switch (grade){
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;
default:
System.out.println("很遗憾您未中奖");
break;
}
System.out.println("欢迎再次回顾!");
}else {
System.out.println("很抱歉,您购物未满199元不能参与此活动");
}
循环结构
为什么使用循环?
假设给予一个需求,输出一个HelloWorld我们可以很轻松的将其输出,如果我们需要输出十个HelloWorld、一万个、十万个乃至更多的HelloWorld时要如何完成呢?
此时我们就需要使用循环来解决问题。
什么是循环?
循环用于处理程序中具有规律性的重复操作。
在Java中有三种循环语句
while
do-while
for
while循环
语法:
while(条件表达式){
// 满足条件,则执行
// 迭代语句(退出机制)
}
当条件表达式返回 true 的时候,则可以执行代码块中的内容,在循环体中要有迭代语句,才能让条件中的变量受到控制。
执行顺序:先判断,再执行
示例:打印100次while
int i=0;//定义初始变量
while(i<100) {
System.out.println("第"+(i+1)+"次"+"HelloWorld");
i++;//自加1 操作
}
注意事项:
◆while循环 条件满足后 执行{}里面语句
◆书写过程中第一次条件必须满足 如果不满足 循环直接不会执行
◆声明初始变量 在{}中 变量需要更新 要不然会发生死循环情况
do…while循环
语法:
do{
//循环操作
}while(循环条件);
先执行一次do内的循环操作。然后后条件表达式返回 true 的时候,则可以执行do代码块中的内容。
执行顺序:先执行,后判断
示例:连续录入学生学号,输入“0”则系统退出
//输入学生的学号 输入0时退出
Scanner scanner =new Scanner(System.in);
int id=0;
do {
System.out.println("请输入学号:");
id = scanner.nextInt();
System.out.println(id);
}while(id!=0);
注意事项:
◆do while 循环特点 先执行 后循环操作
◆do while 无论while中条件是否满足 循环操作至少执行一次
for循环
语法:
for(初始化参数;条件判断;更新循环变量){
//执行语句
}
详解:
for(表达式1;表达式2;表达式3){循环体结构}
表达式1:一般作为循环变量赋初始值;
表达式2:循环继续的条件,即能判断出真假的条件,一般为关系表达式;
表达式3:用于循环变量的的改变,可加,可减。。。
示例:
//打印100次HelloWorld
for(int i=0;i<100;i++) {
System.out.println("第"+(i+1)+"次HelloWorld!");
}
//循环录入8们课程的成绩 并求其平均分
Scanner scanner = new Scanner(System.in);
double score=0;
double sum = 0;
for(int i=0;i<8;i++) {
System.out.println("请输入第"+(i+1)+"门课程的成绩:");
score = scanner.nextDouble();
sum = sum+score;
}
System.out.println("课程平均成绩为:"+sum/8);
注意事项:
for循环的初始化必须含有;;
无条件判断会造成死循环
循环条件一次不满足就会跳出循环 不会继续下一次循环
break 和 continue
break(中断循环 跳出循环)
语法:
while(){
if(){
break;//跳出循环
}
}
break通常在循环中与条件语句一起使用
示例:
随机输入10个以内的整数如果遇到0则输出“输入0跳出循环”
//随机输入10个以内的整数如果遇到0则输出“输入0跳出循环”
Scanner scanner = new Scanner(System.in);
int num = 0;
int i;
for ( i = 1; i <=10; i++) {
System.out.println("请输入第"+i+"个数:");
num = scanner.nextInt();
if(num == 0) {
System.out.println("输入0跳出循环");
break;
}
}
System.out.println("循环结束,你输入了"+i+"次");
continue(跳过一次循环 继续执行下一次循环)
语法:
while(){
if(){
continue;//跳出本次循环
}
}
continue :只能用在循环里
示例:
求取1-100以内不包含10的和
//求取1-100以内不包含10的和
int sum = 0;
for(int i=1;i<=100;i++) {
if(i==10) {
continue; //跳出本次循环 本次循环内continue以下的语句不再
}
sum=sum+i;
}
System.out.println(sum);
循环嵌套
循环内可以继续嵌套循环
示例:
//使用0打印出一个5行5列的矩形
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.print("0");
}
System.out.println("0");
}
往往嵌套三次以下 超过三次会导致代码可读性变差!
循环示例
示例一 、 打印1-100之间的偶数和它们的和
package com.qingsu.basis;
public class Loop {
public static void main(String[] args) {
//打印1-100之间的偶数 和他们的和
int i = 1;
int sum = 0;
while(i<101) {
if(i%2==0) {
System.out.println(i);
sum = sum+i;
}
i++;
}
System.out.println("1-100内的偶数和为"+sum);
}
}
示例二、 打印1-100以内的质数(基础版)
while实现
package com.qingsu.basis;
import java.util.Scanner;
public class Loop {
public static void main(String[] args) {
//打印输出1-100内的质数
//质数(素数)仅可以被1和自身整除的数为质数
int num = 2;
boolean flag = true;//用于保存是否为素数
while (num<=100) {//外层循环 用于实现从2-100 1不是质数
int num2 = 2;
while(num>num2) {//内层循环用于判断是不是质数
if(num%num2 == 0) { 如果能被整除则表明不是质数 不能被整除则表明是质数
flag = false;
break;
}
num2++;
}
if(flag) {
System.out.println(num);
}
num++;
flag=true;
}
}
}
for实现
package com.qingsu.basis;
import java.util.Scanner;
public class Loop {
public static void main(String[] args) {
//打印输出1-100内的质数
//质数(素数)仅可以被1和自身整除的数为质数
boolean flag = true;//用于保存是否为素数
for(int i=2;i<=100;i++) {//外层循环 用于实现从2-100 1不是质数
for(int j=2;j<i;j++) {//内层循环用于判断是不是质数
if(i%j==0) {
flag = false;
break;
}
}
if(flag) {
System.out.println(i);
}
flag = true;
}
}
}
示例三、录入班级人数和学员成绩,计算班级学员的平均成绩
package com.qingsu.basis;
import java.util.Scanner;
public class Loop {
public static void main(String[] args) {
//录入班级人数和学员成绩,计算班级学员的平均成绩
Scanner scanner = new Scanner(System.in);
System.out.println("请输入班级人数:");
int num = scanner.nextInt();
int i = 0;
double sum = 0;
while(num>i) {
System.out.println("请输入第"+(i+1)+"位同学的成绩:");
double score = scanner.nextDouble();
i++;
sum = sum+score;
}
System.out.println("平均成绩为:"+sum/num);
}
}
示例四、年增月增问题
某景点2016年旅游人次位130万人,每年增长18%,请问按此增长速度,到哪一年旅游人次达到500万人?
package com.qingsu.basis;
import java.util.Scanner;
public class Loop {
public static void main(String[] args) {
//某景点2016年旅游人次位130万人,每年增长18%,请问按此增长速度,到哪一年旅游人次达到500万人?
int year = 2016;
double num = 1300000;
while (5000000>=num) {
num = num*1.18;
year++;
}
System.out.println("第"+year+"年后旅游人数将达到500万人,人数为"+(int)num);
}
}
示例五、打印九九乘法表
package com.qingsu.basis;
import java.util.Scanner;
public class Loop {
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();
}
}
}
标签:语句,控制,int,流程,System,循环,println,out
From: https://www.cnblogs.com/rehe/p/18338368