Java流程控制01(狂神说Java)
一、Scanner对象
基本语法:
Scanner scanner = new Scanner(System.in);
用法示例:
package com.wei.scanner; import java.util.Scanner; public class Demo06 { public static void main(String[] args) { //创建一个扫描器对象,用于接收键盘数据 Alt+enter 自动补全 new一个对象 Scanner scanner = new Scanner(System.in); System.out.println("使用next方式接收: "); //判断用户有没有输入字符串 if (scanner.hasNext()==true){ //使用next方式接收 String str = scanner.next(); //程序会等待用户输入完毕 System.out.println("输出内容为:"+str); } //凡是属于IO流的类如果不关闭会一直占用资源,要养成良好习惯用完就关掉 //IO流是输入输出流 和电脑打交道的 scanner.close(); } }
next()与nextLine()的区别:
- next()对输入有效字符之前遇到的空白会自动过滤掉,nextLine()不会。
- next()对输入有效字符之后遇到的空白或特殊字符会自动结束输入,nextLine()返回回车之前的所有字符
判断输入是否为整数示例:
package com.wei.scanner; import java.util.Scanner; public class Demo04 { 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.wei.scanner; import java.util.Scanner; public class Demo05 { public static void main(String[] args) { //我们可以输入多个数字,并求其总和与平均数,没输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果 Scanner scanner = new Scanner(System.in); //和 double sum = 0; //计算输入了多少个数字 int m = 0; System.out.println("请输入数据"); //通过循环判断是否还有输入,并在里面对每一次进行求和和统计 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(); } }
二、if选择结构
单结构选择:
if (布尔表达式){ //如果布尔表达式为true将执行的语句 }
双选择结构:
if (布尔表达式){ //如果布尔表达式为true将执行的语句 }else{ //如果布尔表达式为false将执行的语句 }
多选择结构:
if (布尔表达式1){ //如果布尔表达式1的值为true将执行的语句 }else if(布尔表达式2){ //如果布尔表达式2的值为true将执行的语句 }else if(布尔表达式3){ //如果布尔表达式3的值为true将执行的语句 }else{ //如果布尔表达式都不为true将执行的语句 }
示例:
package com.wei.struct; import java.util.Scanner; public class IfDemo03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); /* if语句至多有一个else语句,else语句在所有else if语句之后 if语句可以有多个else if语句,必须在else语句之前 一旦其中一个else if 语句检测为true,其他的else if及else语句跳过执行 */ System.out.println("请输入成绩"); int score = scanner.nextInt(); //if多选择结构 if (score == 100 ){ System.out.println("恭喜满分"); }else if (score<100&&score>=85){ System.out.println("A"); }else if (score<85&&score>=60){ System.out.println("B"); }else if (score<60&&score>=0){ System.out.println("不及格"); }else{ System.out.println("输入成绩不合法"); } scanner.close(); } }
嵌套的if选择结构:
if (布尔表达式1){ //如果布尔表达式1的值为true将执行的语句 if(布尔表达式2){ //如果布尔表达式2的值为true将执行的语句 } }
示例:
import java.util.Scanner; public class IfDemo04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩"); double score = scanner.nextDouble(); //嵌套的if结构 if (score>=50&&score<=100){ if (score>=50&&score<=75) { System.out.println("数字在50到75之间"); }else{ System.out.println("数字在50到100之间"); } }else if (score>=0&&score<50){ if (score>0&&score<=25) { System.out.println("数字在0到25之间"); }else{ System.out.println("数字在25到50之间"); } } scanner.close(); } }
三、Switch多选择结构
Switch选择语法:
switch (expression){ case value : break;//可选 跳出循环 不写会穿透 case value : break;//可选 //可以有任意数量的case语句 default: //可选 //语句
示例:
public class SwitchDemo02 { public static void main(String[] args) { String sex = "男"; //JDK7的新特性,表达式结果可以是字符串!!! 字符串比较的是哈希值是否一致 //反编译 Java---class(字节码文件)----反编译(IDEA) switch (sex){ case "男": System.out.println("男"); break; case "女": System.out.println("女"); break; default: System.out.println("中立"); } } }