JavaSE流程控制(Scanner,顺序结构,选择结构,循环结构,break和continue)

流程控制

用户交互Scanner

1.Scanner对象

Java提供了一个工具类可以获取用户的输入。java.util.Scanner是Java5的新特性,通过Scanner类来获取用户的输入。

Scanner s = new Scanner(System.in);

2.next & nextLine

public static void main(Stirng[] args){        Scanner scanner = new Scanner(System.in);        System.out.println("Next方式接收");        if(scanner.hasNext()){        String str = scanner.next();        System.out.println("输入内容:" str);    }        scanner.close();}

测试数据:Hello World!

结果:Hello

public static void main(Stirngp[] args){        Scanner scanner = new Scanner(System.in);        System.out.println("nextLine方式接收");        if(scanner.hasNextLine()){        String str = scanner.nextLine();        System.out.println("输入内容:" str);    }        scanner.close();}

测试数据:Hello World!

结果:Hello World!

两者区别:

next():

  • 一定要读取到有效字符后才可以结束
  • 对输入有效字符前遇到的空白,next()方法会自动将其去掉
  • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
  • next()不能得到带有空格的字符串

nextLine():

  • 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
  • 可以获得空白

3.其他方法

如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取。

public static void main(String[] args){        Scanner scanner = new Scannr(System.in);        int i = 0;    float f = 0.0f;    System.out.println("输入整数:");    if(scanner.hasNextInt){        i = scanner.nextInt();        System.out.println("整数数据:" i);    }else{        System.out.println("输入的不是整数");    }        System.out.println("输入小数:");    if(scanner.hasNextFloat){        f = scanner.nextFloat();        System.out.println("小数数据:" f);    }else{        System.out.println("输入的不是小数");    }        scanner.close();}

练习

输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字
来结束输入并输出执行结果。

public static void main(String[] args){        Scanner scanner = new Scanner(System.in);        double sum = 0;    int m = 0;        while(scanner.hasNextDouble()){        double x = scanner.nextDouble();        m = m   1;        sum = sum   x;    }        System.out.println(m "个数的和为" sum);    System.out.println(m "个数的平均值是" (sum/m));        scanner.close();}

顺序结构

JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KzhgawnU-1607162008052)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20201205170447995.png)]

选择结构

1.if单选泽结构

if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7bBEwVAv-1607162008059)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20201205170602015.png)]

练习:

接收一个用户输入,判断输入的是否为Hello字符串。

public static void main(String[] args){        Scanner scanner = new Scanner(System.in);        System.out.println("请输入内容:");    String str = scanner.nextLine();        if(str.equals("Hello")){        System.out.println("输入的是:" str);    }        System.out.println("End");        scanner.close();}

2.if双选择结构

当条件表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TPybS3hP-1607162008061)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20201205171030146.png)]

练习:

考试分数大于60就是及格,小于60分就不及格。

public static void main(String[] args){        Scanner scanner = new Scanner(System.in);        System.out.print("请输入成绩:");    int score = scanner.nextLine();        if(score>60){        System.out.println("及格");    }else{        System.out.println("不及格");    }        scanner.close();}

3.if多选择结构

if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uQA7Bb2S-1607162008065)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20201205171349730.png)]

注意!

  • if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
  • if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
  • 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。

练习:

学校根据分数区间分为ABCD四个等级。

public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  System.out.print("请输入成绩:");  int score = scanner.nextInt();   if (score==100){    System.out.println("恭喜满分"); }else if (score<100 && score >=90){    System.out.println("A级"); }else if (score<90 && score >=80){    System.out.println("B级"); }else if (score<80 && score >=70){    System.out.println("C级"); }else if (score<70 && score >=60){    System.out.println("D级"); }else if (score<60 && score >=0){    System.out.println("不及格!"); }else {    System.out.println("成绩输入不合法!"); }   scanner.close();}

4.嵌套if语句

使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句。你可以像 if 语句一样嵌套 else if…else。

if(布尔表达式 1){ 如果布尔表达式 1的值为true执行代码 if(布尔表达式 2){   如果布尔表达式 2的值为true执行代码 }}

5.switch多选择结构

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch(expression){  case value :   //语句   break; //可选  case value :   //语句   break; //可选  //你可以有任意数量的case语句  default : //可选   //语句}

规则:

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现break 语句。
  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

循环结构

Java中有三种主要的循环结构:

  • while 循环
  • do…while 循环
  • for 循环

在Java5中引入了一种主要用于数组的增强型for循环。

1.while循环

只要布尔表达式为 true,循环就会一直执行下去。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LzjqQdtl-1607162008070)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20201205172204290.png)]

练习:

计算1 2 3 … 100=?

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

2.do…while循环

布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zuAQk2kx-1607162008071)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20201205172552053.png)]

练习:

计算1 2 3 … 100=?

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

While和do…While的区别:

while先判断后执行,do…while是先执行后判断.
do…while总是保证循环体会被至少执行一次。

3.for循环

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JFug9xfS-1607162008075)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20201205173738375.png)]

  • 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  • 然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  • 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)。
  • 再次检测布尔表达式。循环执行上面的过程。

练习:

1.计算0到100之间的奇数和偶数的和。

public static void main(String[] args){        int oddSum = 0;    int evenSum = 0;        for(int i = 0;i<=100;i  ){        if(i%2 != 0){            oddSum = oddSum   i;        }else{            evenSum = evenSum   i;        }    }       System.out.println("奇数的和:" oddSum);  System.out.println("偶数的和:" evenSum);    }

2.for循环输出1-1000之间能被5整除的数,并且每行输出3个。

public static void main(String[] args){    for(int i = 0;i<=1000;i  ){        if(i%5 == 0){            System.out.print(i "\t");        }        if((j%(5*3)==0){            System.out.println();        }    }}

3.打印九九乘法表。

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();    }}

4.增强for循环

for(声明语句 : 表达式){ //代码句子}

break 和 continue

1.break关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。

2.continue关键字

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。

3.两者区别

  • break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
  • continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

4.带标签的continue

  • goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用;Java没有goto。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子—带标签的break和continue。
  • “标签”是指后面跟一个冒号的标识符,例如:label:
  • 对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。

练习:

public static void main(String[] args) {  int count = 0;  outer: for (int i = 101; i < 150; i   ) {    for (int j = 2; j < i / 2; j  ) {      if (i % j == 0)        continue outer;   }    System.out.print(i  " "); }}

来源:https://www.icode9.com/content-1-775501.html

(0)

相关推荐

  • if语句块中有return的情况

    if语句块中有return的情况

  • Java制作猜数字小游戏

    引言在利用Java中猜数字的小游戏,可以深度理解Java中的许多知识,譬如Random,条件语句,数据输入,同时还可以学习到循环嵌套,可以更好的让Java小白理解.问题描述如何利用Java程序来自动生 ...

  • Java学习——19基本结构(四)

    本篇介绍do... while循环. 1.       语法格式 do{       循环体语句: }while(布尔表达式); 注意:while(布尔表达式);后面的分号不能省,不能忘. 2.    ...

  • Java语言基础知识整理汇总

    表达式和运算符: 算术运算符: 元代表多少个操作数,一元表示一个操作数: 一元运算符:++自增(只能是变量),++a等价于a = a+ 1; ++a 与 a++ 有区别: ++a 先自增 在运算 a+ ...

  • Java基础之结构

    Java中程序流程控制语句包括条件结构.循环结构和跳转语句 4.1条件结构 条件结构包括顺序结构和选择结构.顺序结构在程序执行中没有跳转和判断,知道程序结束为止.选择结构包括 if 语句,if-els ...

  • Excel VBA入门(三) 流程控制1-条件选择

    VBA中的流程控制分为两种,其一是条件结构式的,即根据条件判断的结果去选择性执行相应的语句(块):另一种是循环,即循环地执行语句(块).本节介绍第一种. 1. IF if 语句其实包含有几种形式: ① ...

  • Java流程控制与Scanner类的使用

    Java流程控制与Scanner类的使用 Scanner类 Scanner类可以使程序接受键盘输入,实现人机交互 一个完整的Scanner的使用例子: //创建一个扫描器对象,用于接收键盘数据 Sca ...

  • 美国布朗大学Indrek Külaots课题组--通过局部热剥落控制石墨烯纳米片薄膜的孔结构和电导率

    热剥离是一种生产石墨烯纳米片有效且可扩展的方法,石墨烯纳米片通常还会重新组装或与其它材料混合以形成新的宏观"石墨烯基材料".热剥离还可以应用到一些宏观的石墨烯基材料上,制造内部孔隙 ...

  • 冯矿伟:目前的隐患,资金是根据结构选择入场和离场的,速度是可以改变结构的,所以速度其实更重要。

    如图:深证成指日线大家很奇怪,为啥指数迟迟不向上发力,因为上证指数上周已经新高了,深证成指之前也已经新高了,那还墨迹啥呢?有几个问题,是拉升之前的拦路虎,必须得一一清除才行,又技术上的,也有博弈上的问 ...

  • 钢丝绳结构选择

    用途名称常用结构备注立井提升不旋转钢丝绳18×7.17×7.24W×7.35W×7压实股钢丝绳DL1916AK.DL1212AK.DL0712AK.DL08PAK.DL1916HK.DL1315HK. ...

  • 什么是公司治理结构原则?公司治理结构原则的主要内容有哪些?

    一.什么是公司治理结构原则 1999年5月,由29个发达国家组成的经济合作与发展组织(OECD),理事会正式通过了其制定的<公司治理结构原则>,它是第一个政府间为公司治理结构开发出的国际标 ...

  • java 流程控制学习

    用户交互Scanner import java.util.Scanner; public class Demo01 { public static void main(String[] args) { ...

  • 《金字塔原理》读书分享41:如何思考横向逻辑(四)顺序如何选择

    在<金字塔原理>一书中,当我们思考金字塔的横向逻辑时,除了常见的时间顺序,结构顺序,还可以使用程度顺序.什么是程度顺序?通俗的理解,程度顺序就是将具有某些共同特点和内容,按照重要程度来进行 ...

  • N型结构之比泰结构

    资金为王 追踪主流资金,精耕热点题材,踩住市场节奏.选股选美,将低吸高抛进行到底. 强者恒强,选择已经在上涨且还会大涨的主流资金聚集的板块龙头. 1.RPS翻红优先一切: 让股价强度说明一切,RPS& ...