六:流程控制语句

1.作用:
一个程序他在执行的时候,各个语句的执行顺序对程序的结果是有直接影响的,所以我们必须很清楚每条语句的执行流程。并且有些时候我们需要通过控制语句的执行流程来实现我们要完成的功能。

2.流程控制语句的分类:
-顺序结构
-选择结构
-循环结构

3.顺序结构
是程序中最简单的结构,是最基本的流程控制,没有特定的语法,按照代码的先后顺序依次执行,程序中很多代码都是这样执行的。简单来说:写在前面的先执行

4.选择结构(分支结构)
-有特定的语法,代码需要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,真或假,所以就产生了选择,按照不同的选择去执行不同的代码。
-Java语言中提供了两种选择结构语句
if
switch
-选择结构之if语句:(使用是针对一个表达式结果是boolean类型的判断;针对一个范围的判断) (if 语句是可以随意嵌套的)

格式:a:   if(关系表达式){语句体;}

执行流程:先判断关系表达式,看结果是真还是假—真执行语句体,假不执行
注意:关系表达式不管在怎么复杂,结果必须是boolean类型 if语句中的语句体如果只有一条语句体,{}可以不写(建议永远不要省);多条语句,{}必须写

b:   if(){语句体1;}else{语句体2;}

执行流程:先判断关系表达式,看结果是真还是假----如果是真执行语句体1;假执行语句体2。
注意: 此语句在某些情况下和三元运算符是可以相互转化的。三元运算符的操作都可以使用if语句来实现,反之不成立。
当if语句的语句体是一条输出语句的时候,就不成立。因为三元运算符是运算符,必须要有一个结果返回去。输出语句不能作为结果返回。
eg:(i%2 == 0)?System.out.println("输入的是偶数"):System.out.println("输入的是奇数");
此写法错误!!!!!!!

c:   if(关系表达式1){语句体1;}else if(关系表达式2){语句体2;}else if(关系表达式3){语句体3;}......else{语句体n+1;}

执行流程:先判断关系表达式1,看结果是真是假-----如果是真执行语句体1;假就继续判断关系表达式2,看结果真假,以此类推。
如果没有一个关系表达式为真就执行语句体n+1;
注意:这个代码实现了基本要求,但是存在问题,程序将来是要给用户使用的,他有时候不按套路出牌,所以在测试程序的时候,一定要考虑一些问题:
正确数据,错误数据,边界数据
if语句的 格式一:单个判断 格式二:两个判断 格式三:多个判断例题:使用键盘录入 x 的值,计算出 y 的值 x>5 y = 3x+1; 0<x<5 y = 3x; x<0 y=3x-1;

-选择结构之switch语句:格式:switch(表达式){case 值一:语句体1;break;case 值二:语句体2;break;case 值三:语句体3;break;...........default:语句体n+1;break;}

格式说明:
switch表示这是一个switch语句,表达式的取值:byte 、short 、 int 、 char 、枚举(jdk5以后) 、 String(jdk7以后)。
case后跟的是要和表达式进行比较得值,语句体可以是1条语句,也可以是多条语句
break表示跳出switch语句,(中断)结束switch语句
default语句表示所有情况都不符合的时候就执行default处的语句,它和if语句中的else作用相似。
执行流程:
先计算表达式的值和case后的值依次进行比较,一旦发现有对应的值,就执行对应的语句,执行过程中碰到break就结束了。
如果所有的case值都与之不匹配,就执行default后的语句体。执行完成后结束switch。

/*
用switch语句 键盘录入一个数据,根据数据的值,输出对应的星期
/*

import  java.util.Scanner;
class Demo21{
public static void main(String[]args){
Scanner  sc = new Scanner(System.in);
System.out.println("请输入一个范围在1-7的数: ");
int day = sc.nextInt();
switch(day){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;
}
}
}

//break不能省,case穿透

import   java.util.Scanner;
class Demo21{
public static void main(String[] args){
int a = 3;
int b = 5;
switch(a){default:b++; break;case 2:b++;break;case 3:b++;break;
}
System.out.println(b);
int a = 2;
int b = 3;
switch(a){default:b++;case 3:b++;case 4:b++;
}
System.out.println(b);
}
}

注意: case后面只能是常量,不能是变量。多个case后面的值不能出现相同的。 default 可以省略,建议不要省略。 break 也可以省略,但是也不要省略。
default语句可以出现在switch语句中的任意位置。

/*
用switch语句模拟一个选择题
分析:
先出一道题,给出选择答案
通过键盘选择你认为正确的答案
根据你的选择来判断是否选择正确
case 后可以是字符,但是Scanner却没有可以接受字符的方法
所以我们可以接受一个整数,然后把整数强转成字符。
*/

import java.util.Scanner;
class Demo22{
public static void main(String[] args){
//出题
System.out.println("请选择你最喜欢的女明星:");
System.out.println("65:迪丽热巴");
System.out.println("66:杨幂");
System.out.println("67:佟丽娅");
System.out.println("68:杨颖");//键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请选择: ");int number = sc.nextInt();
char yourChose = (char)number;switch(yourChose){case'A':System.out.println("你选的是迪丽热巴");break;case'B':System.out.println("你选的是迪丽热巴");break;case'C':System.out.println("你选的是迪丽热巴");break;case'D':System.out.println("你选的是迪丽热巴");break;default:System.out.println("没有该选项");break;
}
}
}

练习:
/*
键盘录入字符串,判断是否有匹配的,如果有就输出该字符串,没有的话输出错误
*/

import  java.util.Scanner;
class Demo23{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = sc.nextLine();
switch(str){case "Good":System.out.println("Good");break;case "Bad":System.out.println("Bad");break;case "Study":System.out.println("Study");break;default:System.out.println("错误");break;
}
}
}

/*
用switch判断月份的季节
利用switch语句中的一个小特点:case穿透
*/

import  java.util.Scanner;
class Demo23{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入月份: ");
int month = sc.nextInt();
switch(month){       case 12:case 1:case 2:System.out.println(month+"月是冬天");break;case 3:case 4:System.out.println(month+"月是春天");break;case 6:case 7:case 8:System.out.println(month+"月是夏天");break;case 9:case 10:case 11:System.out.println(month+"月是秋天");break;default:System.out.println("输入有误,请重新输入!");break;
}
}
}

5.循环结构
循环语句可以在满足条件的情况下,反复执行某一段代码。
这个被反复执行的代码叫做 循环体语句。
当反复执行这个循环体时,需要在合适的时候结束循环,就需要把判断条件改成false,就可以结束循环,否则会一直执行下去形成了死循环。

-循环语句的组成:
初始化语句
可由一条或多条语句组成,这些语句完成了一些初始化操作
判断条件语句
是一个boolean类型表达式,由这个表达式来决定是否继续执行循环体语句
循环体语句
就是我们需要多次执行的代码
在一次循环体结束后,下一次循环判断条件执行前执行。通过控制循环条件中的变量,可以让我们的循环在适当的时候结束。
-循环语句分类:
for 循环
while 循环
do…while 循环

-for 循环
格式:for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}执行流程:a:先执行初始化语句b:执行判断条件语句,看结果是真还是假如果是真,就继续执行循环体语句如果是假,就结束循环c:当为真时,执行控制条件语句d:回到b步骤继续/
输出10次hellojava
*/

class xunhuan{
public static void main(String[] args){
int i;
for(i=1;i<10;i++){
System.out.println("Hello Java");
}
}

注意:判断条件语句不管简单还是复杂,结果是boolean类型。如果循环体语句是一条语句,{}可以省略,建议永远不要省!!!!如果是多条就不能省。

public class Demo1{
public static void main(String[] args){
int i = 0;
while (i<10){
System.out.println(i++);
}
}
}

练习:
求1-100的偶数和:
方法一:

class xunhuan{
public static void main(String[] args){
int sum = 0;
for(int i = 0;i<=100;i++){
if (i%2 ==0){
sum += i;
}
}
System.out.println(sum);
}
}

方法二:

class xunhuan{
public static void main(String[] args){
int sum = 0;
for(int i = 0;i<=100;i+=2){
sum += i;
}
System.out.println(sum);
}
}

求8的阶乘

class xunhuan{
public static void main(String[] args){
int sum = 1;
for(int i = 1;i<=8;i++){
sum *= i;
}
System.out.println(sum);
}
}

面试题:
/*
在控制台上输入所有“水仙花数“
水仙花数:指的是一个3位数,各个位上的数字的立方和(100-999)等于该数本身
eg:153 = 111+555+333 = 1+125+27 = 153
分析:如何获取个位、十位、百位的数字
比如153:
个位:153%10 = 3;
十位:153/10%10 = 5;
百位:153/100%10 = 1;
千位:i/1000%10
万位:i/10000%10
各个位上的数字的立方和等于该数本身
*/

class xunhuan{
public static void main(String[] args){
int count = 0;
for(int i=100;i<1000;i++){
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
if(ge*ge*ge+shi*shi*shi+bai*bai*bai == i){
count++;
System.out.println(i);
}
}
System.out.println(count);
}
}

/*
统计1-1000之间满足条件的数据有多少个?并输出
条件:除3余2;除5余3;除7余2
*/

class xunhuan2{
public static void main(String[] args){
int count = 0;
for(int i=1;i<1000;i++){
if(i%3 == 2 && i%5 == 3 && i%7 ==2){
System.out.println(i);
count++;
}
}
System.out.println("共"+count+"个");
}
}

/*
在控制台上输出满足条件的五位数
条件:个位=万位;十位=千位;个位+十位+千位+万位=百位
*/

class xunhuan2{
public static void main(String[] args){
for(int i=10000;i<99999;i++){
int ge = i%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 && ge+shi+qian+wan == bai){
System.out.println(i);
}
}
}
}

-while循环
基本格式:while(判断条件语句){
循环体语句:
}
扩展格式:
初始化语句:
while(判断条件语句){
循环体语句:
控制条件语句:
}
练习:
/*
输出10次hellojava
*/

class xunhuan2{
public static void main(String[] args){
int i = 0;
while(i<10){
i++;
System.out.println("Hello Java");
}
}
}

求1-100的偶数和:

class xunhuan2{
public static void main(String[] args){
int sum = 0;
int i=0;
while(i<=100){
sum += i;
i += 2;
}
System.out.println("sum="+sum);
}
}

求8的阶乘

class xunhuan2{
public static void main(String[] args){
int sum = 1;
int i = 1;
while(i<=8){
sum *= i;
i++;
}
System.out.println(sum);
}
}

/*
在控制台上输入所有“水仙花数“
水仙花数:指的是一个3位数,各个位上的数字的立方和(100-999)等于该数本身
*/

class xunhuan2{
public static void main(String[] args){
int count = 0;
int i =100;
while(i<1000){
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
if(ge*ge*ge+shi*shi*shi+bai*bai*bai == i){
count++;
System.out.println(i);
}
i++;
}
System.out.println(count);
}
}

/*
统计1-1000之间满足条件的数据有多少个?并输出
条件:除3余2;除5余3;除7余2
*/

class xunhuan2{
public static void main(String[] args){
int count = 0;
int i = 1;
while(i<1000){
if(i%3 == 2 && i%5 == 3 && i%7 == 2){
System.out.println(i);
count++;
}
i++;
}
System.out.println("共"+count+"个");
}
}

/*
在控制台上输出满足条件的五位数
条件:个位=万位;十位=千位;个位+十位+千位+万位=百位
*/

class xunhuan2{
public static void main(String[] args){
int count = 0;
int i = 10000;
while(i<99999){
int ge = i%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 && ge+shi+qian+wan == bai){
System.out.println(i);
count++;
}
i++;
}
System.out.println(count);
}
}


-for循环和while循环的区别:for循环和while循环是可以相互转换的,但是还是有一些区别的:使用区别:控制条件语句控制的那个变量,在for循环结束后,就不能被访问了,而while循环在结束后那个变量还可以使用。如果想在循环外边继续使用那个变量就用while,否则就用for。因为for循环结束后,那个变量就跟着从内存中消失了,可以提高内存利用率。场景区别:for循环适合针对一个范围进行判断(循环次数可知);while循环适合判断次数不确定的情况(循环次数不可知)。

/*
面试题:
珠穆朗玛峰的高度是8848m,假设我有一张足够大的纸,厚度是0.01m。问:最低对折多少次,厚度就不低于珠穆朗玛峰的高度?
*/

class xunhuan2{
public static void main(String[] args){
//定义统计变量,默认值0
int count = 0;
double start = 0.01;
double last = 8848;
while(){
if(start<last){    //判断每一次厚度有没有超过珠穆朗玛峰
count++;
start *= 2;
System.out.println("第"+count+"次的厚度是"+start);
}
}
System.out.println(count);
}
}


-do...while循环格式:基本格式:do{循环体语句}while(判断条件语句);   扩展格式:初始化语句:do{循环体语句:控制条件语句:}while(判断条件语句);

练习:
/*
输出10次hellojava
*/

class xunhuan2{
public static void main(String[] args){
int i = 1;
do{
System.out.println("Hello Java");
i++;
}while(i<=10);
}
}

/*
求1-100之和
*/

class xunhuan2{
public static void main(String[] args){
int sum = 0;
int i = 1;
do{
sum += i;
i++;
}while(i<=100);
System.out.println(sum);
}
}


循环语句的区别:do...while循环无论怎么样至少都会执行一次循环体for,while循环先判断条件是否成立,如果成立才会执行循环体语句先考虑用for,如果循环次数不确定,在考虑while,最后再考虑do...while(特殊情况下才使用)。

eg:

class xunhuan2{
public static void main(String[] args){
int a = 2;
/*
while(a<2){
System.out.println("空气是世界的");
}
*/
do{
System.out.println("空气是世界的");
a++;  //不能丢,一旦丢了就造成死循环
}while(a<=3);
}
}
注意:死循环(一定要注意控制条件语句控制的那个变量,如果没有的话,就变成死循环了)-两种死循环的格式:while(true){}for(;;){}


-循环嵌套

练习:
/*
在控制台上输出一个三行八列的*图案
*/

class xunhuan2{
public static void main(String[] args){
for(int i = 0;i<3;i++){
for(int j = 0;j<8;j++){
System.out.print(" * ");
}
System.out.println();
}
}
}

//通过这个例子发现外层for控制行,内层for控制列。for中套for,这就是循环嵌套。

/*
在控制台上输出一个三角形

class xunhuan2{
public static void main(String[] args){
for(int i=0;i<5;i++){
//for(int j=i;j<5;j++){ 出来是倒三角
for(int j=0;j<=i;j++){            //出来是正三角
System.out.print(" * ");
}
System.out.println();
}
}
}

/*
在控制台上输出九九乘法表
11=112=2 22=413=3 23=6 33=9
*/

class xunhuan2{
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");  //     t 制表符   移动一个tab的距离      转义字符     r 回车   n   换行
}
System.out.println();
}
}
}

练习:等腰三角形、菱形。。。。。。
/*
等腰三角形
*/

import java.util.Scanner;
class xunhuan2{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入num=");
int num = sc.nextInt();
for(int i=0;i<=num;i++){
for(int j=i;j<=num;j++){
System.out.print(" ");
}
for(int j=1;j<=2*i+1;j++){
System.out.print("*");
}
System.out.println();
}
}
}


-跳转控制语句:如果想在循环执行到某一步的时候就结束java给我们提供了break(中断)   continue(继续)     return(返回) 来实现控制语句的跳转和中断-break:(使用范围)在选择结构switch语句中、在循环语句中。   (作用)跳出单层循环,也可以跳出多层循环(在外层循环带标签、标签格式--标签名:循环语句)                 注意:标签名要符合java命名规则
class xunhuan2{
public static void main(String[] args){
//跳单层
for(int i=0;i<10;i++){
if(i==5){
break;
}
System.out.println(i);
}
}
}
class xunhuan2{
public static void main(String[] args){
//跳多层
aaa:for(int i=0;i<5;i++){
bbb:for(int j=0;j<10;j++){
if(j==3){
break aaa;//跳出外层
//break bbb;
}
System.out.print("*");
}
System.out.println();
}
}
}
-continue:(在循环语句中用)结束本次循环,执行下次循环。
class xunhuan2{
public static void main(String[] args){
for(int i=0;i<10;i++){
if(i==5){
continue;
}
System.out.println(i);
}
}
}结果:12346789

/*
输出2次aaa,空白处写什么?
break;
输出7次aaa,空白处写什么?
continue;
输出13次aaa,空白处写什么?
System.out.println(“aaa”); 3,6,9的时候会输出2次
*/

class xunhuan2{
public static void main(String[] args){
for(int i=1;i<=10;i++){
if(i%3==0){
System.out.println("aaa");
}
System.out.println("aaa");
}
}
}
-return:返回。return关键字不是为了跳出循环,最常用的功能是结束一个方法;也就是退出方法。跳转到上层调用的方法。作用:不是结束循环,而是结束方法。
class xunhuan2{
public static void main(String[] args){
for(int i=1;i<=10;i++){
if(i==2){
System.out.println("aaa");
//   break; 结果是 1   aaa   ccc
//   continue;  结果是 1 aaa 3456789  ccc
return; // 结果是 1 aaa
}
System.out.println(i);
}
System.out.println("ccc");
}
}

面试题: 小明他妈每天给小明2.5元,他都会存起来,但是,如果当这一天是存钱的第5天或者第5天的倍数,他就会花掉6元。
问:要多少天,小明才能存够100元。

class xunhuan2{
public static void main(String[] args){
int day = 0;
double start = 0;
double last = 100;
while(start<last){
if(start<last){
day++;
start +=2.5;
if(day%5==0){
start -= 6;
}
continue;
}
}
System.out.println("第"+day+"天攒够100元");
}
}

java switch case怎么判断范围_java小白从入门到精通(基础二)相关推荐

  1. java switch case多个条件_JAVA基础程序设计之判断与循环

    1 基本概念 一般来说程序的结构包含三种情况: 顺序结构:至上而下逐行执行,一条语句执行完之后继续执行下一条,直到程序结束.选择结构:根据条件的成立与否,再决定执行哪些语句,例如 if-else- 语 ...

  2. java switch case怎么判断范围_【转】Java期末复习攻略!

    期末 19年就这样要过去了, 终于到了小时候作文里的未来呢! 然而,期末考试也随之来临了. 不知大家"预习"的怎么样呢? 期末复习资料的放送快接近尾声了 下面康康学长学姐们 怎么教 ...

  3. Python基础教程让小白从入门到精通(二)爬虫实践及网络规范

    requests库的运用 import requests #在使用前需要先通过 import 来引入 requests 库 res = requests.get('url') #我们通过调用reque ...

  4. Java修饰符、Java运算符、Java循环语句、Java条件语句、Java switch case

    Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class ...

  5. Java switch case 语句

    什么是switch case? switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. switch的语法 switch case 语句语法格式如下: switch( ...

  6. 2023 剪映小白从入门到精通手机视频剪辑课程全套视频

    2023 剪映小白从入门到精通手机视频剪辑课程全套视频 2023 剪映小白从入门到精通手机视频剪辑课程全套视频..

  7. java switch case 或_Java Switch Case 条件判断

    Java的 Switch Case 语句,可以理解为分支 例子 假设打麻将有四个人 编号为 1 2 3 4 对应名字为 张三,李四,王五,赵六 数据结构 switch(expression){ cas ...

  8. java switch case 跳转_Java switch case语句

    1.switch case 语句有如下规则: switch 语句中的变量类型可以是: byte.short.int 或者 char.从 Java SE 7 开始,switch 支持字符串 String ...

  9. C++用unordered_map查表代替if else/switch case多判断语句

    一.引言 在C++中我们写判断逻辑一般会用if else或switch case语句,比如以下例子: #include <iostream>using namespace std;clas ...

最新文章

  1. 新时代网管的十二大主要职责(一)
  2. 深入理解Emoji(三) —— Emoji详解
  3. K-Means算法Demo
  4. linux日志不区分大小写,windows系统迁移到linux下,Nginx实现url请求不区分大小写...
  5. 2018年工业机器人销量排位_工业机器人年销量连续七年居世界首位 专家建议开辟新市场...
  6. 生成jsp验证码的代码详解(servlet版)
  7. 【华为云技术分享】LiteOS无法直接烧录或者烧录失败解决方法--ST-Link
  8. Hyperledger Fabric教程(11)-- 链码和背书策略
  9. 20191113每日一句
  10. 手机uc怎么放大页面_怎么选择大功率手机信号放大器?
  11. pythonmt4通讯swot矩阵_swot分析矩阵范例(各部门)
  12. 泛函分析笔记(七) 连续线性算子和连续多重线性映射
  13. PDF转换器可以做到PDF转Office,TXT,HTM,PDF文件;PDF合并拆分,压缩,加密解密!
  14. 怎样用word制作标准格式公文操作实例
  15. 7、osg中响应键盘鼠标事件以及鼠标和键盘编码表
  16. 用到的Android studio依赖库
  17. 微信公共平台配置域名提示,协议头非法
  18. 二叉树的讲解《二》(二叉树实现堆)
  19. 计算机系统程序文件扩展名,怎么显示电脑文件扩展名
  20. 网校系统是怎样搭建的?

热门文章

  1. 美团搜索中查询改写技术的探索与实践
  2. 【报告分享】2020人工智能+安防行业应用研究分析报告.pdf(附下载链接)
  3. 谁与争锋,2020腾讯广告算法大赛初赛正式启动
  4. 程序猿们正在疯狂battle,看看究竟谁的算法更6
  5. 【干货】比赛后期大招之stacking技术分享
  6. 为什么c语言运行了是cmd,为什么C语言的程式码执行都在命令提示符进行?而且学习的基本都是数学问题,跟开发软体有什么关系?...
  7. python数据分析实况_Python数据分析实战:降雨量统计分析报告分析
  8. Leetcode每日一题:164.maximum-gap(最大间距)
  9. pycharm 运行后,如何查看变量值以及继续输入语句并运行?(非Debug , debug太慢)
  10. 吴恩达机器学习4——神经网络