Java的流程管制
- 根底阶段 目录:
- 用户交互Scanner
- 程序构造
- 抉择构造
- 循环构造
- break & continue
- 练习题
1.Scanner对象
- 之前咱们学的根本语法中并没有实现程序和人的交互,然而Java给咱们提供了这样一个工具类,咱们能够获取用户的输出。Java.util.Scanner是Java5的新特色,咱们能够通过Scanner类来获取用户的输出。
- 根本语法:
Scanner s = new Scanner(System.in);
- 通过Scanner类的next()与nextLine()办法获取输出的字符串,在读取前咱们个别须要应用hasNext()与hasNextLine()判断是否还有输出的数据。
- next():
- 肯定要读取到无效字符后才能够完结输出。//必须要输出否则程序不进行
- 对输出无效字符之前遇到的空白,next()办法会主动将其去掉。//Hello World 只输入Hello因为有空格
- 只有输出无效字符才将其前面输出的空白作为分隔符或者结束符。/’/只有程序中有空格就完结’
- next()不能失去带有空格的字符串。
应用next()的例子:
package com.company.base;import java.util.Scanner;public class demo1 { public static void main(String[] args) { //创立一个扫描器对象,用于承受键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("应用next形式接管:"); //判断用户有没有输出字符串 if (scanner.hasNext()){ //应用next形式接管 String str = scanner.next(); System.out.println("输入的内容为:"+str); } scanner.close(); //IO流的用完记得关掉 占用内存 IO流就是输入输出流 和电脑替换信息的 }}
nextLine()
- 以Enter为结束符,也就是说nextLine()办法返回的是输出回车之前的所有字符。
- 能够取得空白。
package com.company.base;import java.util.Scanner;public class demo2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输出数据"); if(scanner.hasNextLine()){ String abc = scanner.nextLine(); System.out.println("输入:"+abc); } scanner.close(); }}
- 判断整数与小数的scanner
package com.company.base;import java.util.Scanner;public class demo4 { public static void main(String[] args) { Scanner scanner = new Scanner(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(); }}
做一个繁难计算器
package com.company.base;import java.util.Scanner;public class demo5 { 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;//m++ sum = sum + x; System.out.println("你输出了第"+m+"个数据,而后点钱后果sum"+sum); } System.out.println(m +"个数的和为"+ sum); System.out.println(m+ "个数的平均值是"+(sum / m)); scanner.close(); }}
2.程序构造
- Java的根本构造就是程序构造,除非特地指明,负责就依照程序一句句执行。
- 程序构造是最简略的算法构造。
- 语句与语句之间,框与框之间是按从上到下的程序进行的,它是由若干个顺次执行的解决步骤组成的,它是任何一个算法都离不开的一种根本的算法构造。
那还没搞明确 那就给上面的RUN一下你就晓得了
package com.company.base;public class demo6 { public static void main(String[] args) { System.out.println("1"); System.out.println("2"); System.out.println("3"); System.out.println("4"); System.out.println("5"); System.out.println("6"); System.out.println("7"); System.out.println("8"); }}
3.抉择构造(很重要的)
- if单抉择构造
- if双抉择构造
- if多抉择构造
- 嵌套的if构造
- switch多抉择构造
- if单抉择构造
- 咱们很多时候须要去判断一个货色是否可行,而后咱们才去执行,这样一个过程在程序中用if语句来示意
- 语法:
if(布尔表达式){ //如果布尔表达式为true将执行的语句,否则跳过}
- if双抉择构造
- 须要两个判断时,就须要一个双选则构造,所以就有了if-else构造。
- 语法:
if(布尔表达式){ //如果布尔表达式的值为true}else{ //如果布尔表达式的值为false}
package com.company.ifdemo;import java.util.Scanner;public class if2 { public static void main(String[] args) { //考试分数大于60就是及格,小于60分就是不及格 Scanner scanner = new Scanner(System.in); System.out.println("请输出问题:"); int score = scanner.nextInt(); if (score>60){ System.out.println("及格"); }else { System.out.println("不及格"); } }}
- if多抉择构造
- 咱们发现方才的代码不符合实际状况,实在的状况还可能存在ABCD,存在区间多级判断。比方90-100就是A,80-90就是B等等。在生活中很多时候咱们的抉择也不仅仅就只有这两个,所以咱们须要一个多抉择构造来解决这类问题。
if(布尔表达式1){ //如果布尔表达式1的值为true执行代码}else if(布尔表达式2){ //如果布尔表达式2的值为true执行代码}else if(布尔表达式3){ //如果布尔表达式3的值为true执行代码}else{ //如果以上布尔表达式都不为true执行代码}
package com.company.ifdemo;import java.util.Scanner;public class if3 { public static void main(String[] args) { //考试分数大于60就是及格,小于60分就是不及格 Scanner scanner = new Scanner(System.in); System.out.println("请输出问题:"); int score = scanner.nextInt();/*if语句至少有一个else语句,else语句在所有的else if语句之后。if语句能够有若干个else if语句,它们必须在else语句之前。一旦其中一个else if 语句检测为true,其余的else if以及else语句都将跳过执行 */ 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("不及格好好学习吧"); } }}
4. 嵌套的if构造 * 应用嵌套的if…else语句是非法的。也就是说你能够在另一个if或者else if语句中应用if或者else if语句。你能够像if语句一样嵌套else if…else。 * 语法
if(布尔表达式1){ //如果布尔表达式1的值为true执行代码 if(布尔表达式2){ //如果布尔表达式2的值为true执行代码 }}
4.Switch多抉择构造
- 多抉择构造还有一个实现形式就是switch case语句。
- switch case语句能判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch语句中的变量类型能够是:
- byte、short、int、或者char
- 从Java SE 7 开始
- switch反对字符串String类型了
- 同时case 标签必须为字符串常量或者字面量。
Switch(expression){ case value: //语句 break;//可选 case value: //语句 break;//可选 //你能够有任意数量的case语句 default://可选 //语句 }
第一个例子:
package com.company.jiaohuan;public class JH { public static void main(String[] args) { // char grade = 'A'; switch (grade){ case 'A': System.out.println("优良"); break;//可选 case 'B': System.out.println("良好"); break;//可选 case 'C': System.out.println("及格"); break;//可选 case 'D': System.out.println("再接再厉"); break;//可选 case 'E': System.out.println("拉了兄弟"); break;//可选 default: System.out.println("未知等级"); } }}
第二个例子:
package com.company.jiaohuan;public class JH2 { public static void main(String[] args) { String name = "chb";//JDK 7 新个性,表达式后果能够是字符串!!! //字符的实质还是数字!!! //反编译 java----class(字节码文件)---反编译(IDEA)switch (name){ case "RAP": System.out.println("RAP"); break; case "整活": System.out.println("整活"); default: System.out.println("妹有啊");} }}
5.循环构造
- while循环
while(布尔表达式){ //循环内容}
* 只有布尔表达式为true,循环就会始终执行上来。* 咱们大多数状况是会让循环停止下来的,咱们须要一个让表达式生效的形式来完结循环。* 少部分状况须要循环始终执行,比方服务器的申请响应监听等。* 循环条件始终为true就会造成有限循环【死循环】咱们失常的业务编程中应该尽量避免死循环。会影响程序性能或者造成程序卡死解体!
package com.company.whiledemo01;public class Whiledemo1 { public static void main(String[] args) { //输入1-100 int i = 0; while (i < 5201314){ i++; System.out.println(i); } }}
计算1+2+。。+100
public class Whiledemo3{ public static void main(String[] args) { //计算1+2+。。+100 int i = 0; int sum = 0; while (i<=100){ sum = sum + i; i++; } System.out.println(sum); }}
do…while循环
- 对于while语句而言,如果不满足条件,则不能进入循环。但有时候咱们须要即便不满足条件,也至多执行一次。
- do…while循环和while循环类似,不同的是,do…while循环至多会执行一次
do{ //代码语句}while(布尔表达式);
- 应用do…while语句计算1+2+。。+100
package com.company.whiledemo01;public class dowhiledemo1 { public static void main(String[] args) { int i = 0 ; int sum = 0 ; do{ sum = sum + i; i++; }while ((i<=100)); System.out.println(sum); }}
public class dowhiledemo2{ public static void main(String[] args) { int a = 0; while (a<0){ System.out.println(a); a++; } System.out.println("==========="); do{ System.out.println(a); a++; }while (a<0); }
- while和do…while的区别:
while先判断后执行,dowhile是先执行后判断!
- DO…while总是保障循环领会被至多执行一次!这是他们的次要差异。
- for循环
- 在Java5中引入了一种次要用于数组的增强型for循环