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 循环