一、Scanner对象
- 获取用户输入
- 基本语法:
Scanner s = new Scanner(System.in);
- 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
package scanner;
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);
}
//凡是属于IO流的类,若不关闭会一直占用资源
scanner.close();
}
}
package scanner;
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
if(scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("输出为:"+str);
}
scanner.close();
}
}
- next():
- 读取到有效字符后才结束
- 自动去掉有效字符前的空白
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
- nextLine():
- 以enter为结束符
- 可以获得空白
二、Scanner进阶使用
1.示例:判断输入为整数/小数
代码如下(示例):
package scanner;
import java.util.Scanner;
public class Demo3 {
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();
}
}
2.示例:求和及求平均
代码如下(示例):
package scanner;
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++;
sum = sum + x;
}
System.out.println(m + "个数的和为" + sum);
System.out.println(m + "个数的平均值为" + (sum / m));
scanner.close();
}
}
调用String的charAt(0)方法获取第一个字符,如char a = scanner.next().charAt(0);
三、结构
1.顺序结构
- Java的基本结构,最简单的算法结构,按顺序依次执行
2.选择结构
- if单选择结构
if(布尔表达式){
//若布尔表达式为true执行的语句
}
- if双选择结构
if(布尔表达式){
//若布尔表达式为true
}else{
//若布尔表达式为false
}
- if多选择结构
if(布尔表达式1){
//若布尔表达式1为true
}else if(布尔表达式2){
//若布尔表达式2为true
}else if(布尔表达式3){
//若布尔表达式3为true
}else if(布尔表达式4){
//若布尔表达式4为true
}else{
//若以上布尔表达式都不为true
}
- 嵌套if结构
if(布尔表达式 1){
if(布尔表达式 2){
}
}
- switch多选择结构
- switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
- switch语句中的变量类型可以为“byte、short、int或char
- case标签必须为字符串常量或字面量
- caes穿透现象:不加break会输出符合的case之后所有的值
- JDK7后,可以使用字符串
switch(expression){
case value :
//语句
break;//可选
case value :
//语句
break;//可选
default ://可选
//语句
}
- 反编译:java—class(字节码文件)—反编译(IDEA)
3.循环结构
- while循环
- 循环结束时为布尔表达式为false,要避免死循环
- 布尔表达式为true时循环继续
- 少部分情况需要循环一直执行,如服务器的请求响应监听
- 先判断后执行
while(布尔表达式){
//循环内容
}
- do…while循环
- 即使不满足循环,也至少执行一次
- 先执行后判断
do{
//代码语句
}while(布尔表达式);
- for循环
- 执行次数在执行前确定
- 最先执行初始化,可以声明一种类型的多个循环控制变量,也可以是空语句
- 其次检查布尔表达式的值。若为true,执行循环体;若为法拉瑟,循环终止并执行循环体后面的语句
- 执行一次循环后更新循环控制变量
- 再次检测布尔表达式,循环执行上述过程
for(初始化; 布尔表达式; 更新){
//代码语句
}
- 增强for循环
- 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
- 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
for(声明语句 : 表达式)
{
//代码句子
}
- break continue
- break强行退出循环
- continue跳过循环体中尚未执行的语句,接着执行下一次是否执行循环的判定,用于终止某次循环过程
网课来源
【狂神说JAVA】https://www.kuangstudy.com/