Java5流程控制-Scanner、If、Switch
Java提供的一个工具类,用以实现程序和人的交互,使程序可以获取用户的输入
java.util.Scanner是Java5的新特征
我们可以通过Scanner类来获取用户的输入
基础语法:
Scanner s = new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,
在读取前一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据
next():
-
一定要读取到有小资附后才可以结束输入
-
对输入有效字符之前遇到的空白,next()方法会自动将其去掉
-
只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
-
next()不能得到带有空格的字符串
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:"); //输入Hello World
//判断用户有没有输入字符串
if(scanner.hasNext()){
//使用next方式接收
String str = scanner.next(); //next()不能得到带有空格的字符串
System.out.println("输出的内容为:"+str); //输出为Hello
}
//凡是属于IO流的类如果不关闭会一直占用资源,需要养成良好的习惯,用完就关掉
scanner.close();
}
}
nextLine():
-
以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
-
即可以获得输入的带空格的字符串
public class Demo02 {
public static void main(String[] args) {
// 从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:"); //输入Hello World
//判断是否还有输入
if(scanner.hasNextLine()){
String str = scanner.nextLine(); //nextLine()以Enter为结束符
System.out.println("输出的内容为:"+str); //输出为Hello World
}
scanner.close();
}
}
练习:
判断是否为整数和小数:
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判断结构
//如果...那么
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();
}
}
连续输入多个数,计算总和和平均值
利用while循环结构
public class Demo05 {
public static void main(String[] args) {
//可以输入多个数字,并求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
Scanner scanner = new Scanner(System.in);
//和
double sum = 0;
//计算输入了多少个数字
int m = 0;
//while循环结构
//通过循环判断是否还要输入,并在里面对每一次进行求和统计
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();
}
}
顺序结构
Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序执行语句
顺序结构是最简单的算法结构
语句与语句之间,框与框之间是按照从上而下的顺序进行的,它是由若干个依次执行的处理步骤组成的
它是任何算法都离不开的一种基本算法结构
public class ShunXuDemo {
public static void main(String[] args) {
//顺序结构
System.out.println("hello"); //hello
System.out.println("world"); //world
System.out.println("my"); //my
System.out.println("love"); //love
System.out.println("!"); //!
}
}
选择结构
if单选择结构
很多时候需要去判断一个东西是否可行,然后才去执行
此时,这样一个过程在程序中用if语句表示
语法:
if(布尔表达式){
//如果布尔表达式为true,将执行语句
}
public class IfDemo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
//equals:判断字符串是否相等
if(s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
}
if双选择结构
题目:
需求,公司要收购一个软件,成功了,支付100万元,失败了,自己找人开发。这样的需求用一个if无法完成,需要两个判断,就需要双选择结构,所以有了if-else结构
语法:
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//否则布尔表达式的值为false
}
public class IfDemo02 {
public static void main(String[] args) {
//考试分数大于等于60及格,小于60不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
float score = scanner.nextFloat();
if(score>=60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();
}
}
if多选择结构
真实情况可能存在ABCD等等多种情况,存在区间多级判断
所以需要一个多选择结构来处理问题
语法:
if(布尔表达式1){
//如果布尔表达式1的值为true,则执行此行代码
}else if(布尔表达式2){
//如果布尔表达式2的值为true,则执行此行代码
}else if(布尔表达式3){
//如果布尔表达式3的值为true,则执行此行代码
}else {
//如果以上布尔表达式都不为true,则执行此行代码
}
public class IfDemo03 {
public static void main(String[] args) {
//分数>=60<70是及格,>=70<80是中等,>=80<90为良好,>90<100为优秀,等于100为满分
// 大于0小于60为不及格,小于0或者大于100提示输入错误
Scanner scanner = new Scanner(System.in);
/*
if语句至多只有一个else语句,else语句在所有else if语句之后
if语句可以有若干个else if语句,其必须在else语句之前
一旦其中一个else if语句为true,其他的else if以及else语句都将跳过执行
*/
System.out.println("请输入成绩:");
float score = scanner.nextFloat();
if(score==100){
System.out.println("满分!");
}else if(score<100 && score>=90){
System.out.println("优秀");
}else if(score<90 && score>=80){
System.out.println("良好");
}else if(score<80 && score>=70){
System.out.println("中等");
}else if(score<70 && score>=60){
System.out.println("及格");
}else if(score<60 && score>=0){
System.out.println("不及格");
}else {
System.out.println("输入错误!!!");
}
scanner.close();
}
}
嵌套的if结构
使用嵌套的if...else语句是合法的
可以在另一个if或者else if语句中使用if或者else if语句
可以箱if语句一样嵌套else if...else
语法:
if(布尔表达式1){
//如果布尔表达式的值为true,执行此行代码
if(布尔表达式2){
//如果布尔表达式的值为true,执行此行代码
}
}
switch多选择结构
switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
switch(expression){
case value:
//语句
break;//可选
case value:
//语句
break;//可选
//你可以有任意数量的case语句
default://可选
//语句
}
实例:
public class SwitchDemo01 {
public static void main(String[] args) {
//case穿透 //switch 匹配一个具体的值
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("未知等级");
}
}
}
switch语句中的变量类型可以使:
-
byte、short、int或者char
-
从Java SE 7开始
-
switch支持字符串String类型
-
同时case标签必须为字符串常量或字面量
public class SwitchDemo02 {
public static void main(String[] args) {
String name = "学校";
//JDK7的特性,表达式结果可以是字符串
//自负的本质还是数字
//反编译 java--->class(字节码文件)--->反编译(IDEA)
switch (name){
case "好喽":
System.out.println("好喽");
break;
case "学校":
System.out.println("学校");
break;
default:
System.out.println("弄啥嘞!");
}
}
}
浙公网安备 33010602011771号