Day08-Java
Java流程控制
tip:ctrl+alt+L可以自动格式化代码
Scanner对象
- 之前我们学习的基本语法中没有实现程序与人的交互,但是Java提供了这样一个工具类从而可以得到用户的输入。我们可以通过Scanner类来获取用户的输入
- 基本语法
Scanner s = new Scanner(System.in)
-
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要用hasNext()与hasNextLine()判断是否还有输入的数据
- next():
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后财经其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
- next():
package com.Kong.FlowControl.Scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
String str = scanner.next();
System.out.println("输出的内容为:"+str);
}
scanner.close();
//凡是属于IO流的类如果不关闭会一直占用资源,要养成用完就关的好习惯
}
}
- nextLine():
- 以Enter作为结束符号,返回的是输入回车之前的所有字符
- 可以获得空白
package com.Kong.FlowControl.Scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("使用nextLine方式接收");
if (sc.hasNextLine()) {
String str = sc.nextLine();
System.out.println("输出的内容为:"+str);
}
sc.close();
}
}
nextLine()使用的情况偏多
package com.Kong.FlowControl.Scanner;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("使用nextLine方式接收");
String str = sc.nextLine();
System.out.println("输出的内容为:"+str);
sc.close();
}
}
小练习
- 输入多个数字,求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
package com.Kong.FlowControl.Scanner;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
//输入多个数字,求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
Scanner sc = new Scanner(System.in);
//求和
double sum = 0;
//计算输入了多少个数字
int m = 0;
System.out.println("请输入数据:");
//通过循环判断是否还有输入,并在里面对每一次进行求和与统计
while (sc.hasNextDouble()) {
m++;
double x = sc.nextDouble();
sum = sum + x;
//sum+=sc.nextDouble();
System.out.println("你输入了第" + m + "个数据,然后当前的结果sum=" + sum);
}
//求平均值
double avg = sum / m;
System.out.println("数字的总和为:" + sum);
System.out.println("数字的平均值为:" + avg);
sc.close();
}
}
顺序结构
- Java的最基本结构就是顺序结构,除非指明,否者就按照一句一句执行
- 顺序结构是最简单的算法结构
- 语句与语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任意一个算法都离不开的一种基本算法结构
package com.Kong.FlowControl.struct;
public class SequenceStructure {
public static void main(String[] args) {
System.out.println("hello1");
System.out.println("hello2");
System.out.println("hello3");
System.out.println("hello4");
System.out.println("hello5");
//从上往下依次运行
}
}
选择结构
-
if单选择结构
-
我们很多时候需要去判断一个东西是否可行,然后才去执行,这样一个过程在程序中用if语句来表示
-
//语法: if(布尔表达式){ //如果布尔表达式为ture将执行的语句 } -
package com.Kong.FlowControl.struct; import java.util.Scanner; public class ifDemo01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入内容:"); String s = sc.nextLine(); //equals:判断字符串是否相等 if (s.equals("Hello")) { System.out.println(s); } System.out.println("End" ); sc.close(); } }
-
-
if双选择结构
-
现在有一个需求,公司要收购一个软件,成了,支付一百万,失败了,自己找人开发。这里就需要两个判断,所有需要双选择结构,于是便有了if-else结构
-
//语法: if(布尔表达式){ //如果布尔表达式的值为ture }else{ //如果布尔表达式的值为false } -
package com.Kong.FlowControl.struct; import java.util.Scanner; public class IfDemo02 { public static void main(String[] args) { //考试分数大于60就是及格,小于60就不及格 Scanner sc = new Scanner(System.in); System.out.println("请输入成绩:"); double score = sc.nextDouble(); if (score < 60) { System.out.println("成绩不及格"); }else{ System.out.println("成绩合格"); } sc.close(); } }
-
-
if多选择结构
-
其实刚才的代码不符合真实情况,真实的情况还可能存在多区级判断,所以需要一个多选择结构来处理这类问题
-
//语法: if(布尔表达式1){ //如果布尔表达式1的值为ture执行代码 }else if(布尔表达式2){ //如果布尔表达式2的值为ture执行代码 }else if(布尔表达式3){ //如果布尔表达式3的值为ture执行代码 }else { //如果以上布尔表达式的值都不为ture执行代码 } -
package com.Kong.FlowControl.struct; import java.util.Scanner; public class IfDemo03 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入成绩:"); double score = sc.nextDouble(); if (score >= 90 && score <= 100) { System.out.println("成绩的等级为:A"); } else if (score >= 80 && score < 90) { System.out.println("成绩的等级为:B"); } else if (score >= 70 && score < 80) { System.out.println("成绩的等级为:C"); } else if (score >= 60 && score < 70) { System.out.println("成绩的等级为:D"); } else if (score < 60 && score >= 0) { System.out.println("成绩不合格"); } else { System.out.println("成绩不合法"); } sc.close(); } }
-
-
嵌套的if结构
-
使用嵌套的if…else语句是合法的,也就是说可以在另一个if或者else if语句中使用if或者else if语句,你可以像if语句一样嵌套else if…else
-
//语法: if(布尔表达式1){ //如果布尔表达式1的值为ture执行代码 if(布尔表达式2){ //如果布尔表达式2的值为ture执行代码 } }
-
-
switch多选择结构
-
多选择结构还有一个实现方式就是switch case语句
-
switch case语句判断一个变量于一系列值中的某个值是否相等,每个值称为一个分支
-
switch语句中的变量类型可以是
- byte,short,int或者char
- 从Java SE 7开始,switch支持字符串String类型了
- 同时case标签必须为字符串常量或字面量
-
//语法: switch(expression){ case value: //语句 brake;//可选 case value: //语句 brake;//可选 //任意数量的case语句、 default://可选 //语句 } -
package com.Kong.FlowControl.struct; import java.util.Scanner; 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("未知"); } } } -
package com.Kong.FlowControl.struct; 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号