Java流程控制
Java流程控制
用户交互Scanner
? 我们可以通过Scanner类来获取用户的输入
Scanner的使用
语法:
Scanner s =new Scanner(System.in);
? 通过Scanner类的next()与nextline()来获取输入的字符串,在读取数据前一半用hasNext()与hasNextLine()判断是否还有输入的数据
? 在使用Scanner类前,需导入Scanner类
import java.util.Scanner
Scanner scanner = new Scanner(System.in);//创建一个扫描器对象用于接收键盘数据
System.out.println("使用next方法接收");//用于提示用户输入数据
String a =scanner.next();//定义一个字符串a来接收用户输入数据
//在输入数据前,程序不会停止,而是会在这里等待用户输入完毕
System.out.println("输入的内容为"+a);//在这里输出用户输入的内容
scanner.close();//凡是属于IO流的类如果不关闭会一直占用资源,要养成习惯用好就关
Scanner对象
-
next()
-
一定要读取到有效字符才能结束输入
-
对输入有效字符前遇到的空白,next()方法会自动将其去掉
-
只有输入有效字符后才能将后面输入的空白作为分隔符或结束符
-
next()不能得到带有空格的字符串
-
-
nextLine()
-
以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
-
使用nextLine()方法可以获得空白
-
Scanner的进阶使用
? Scanner类下还有许多输入方法,如nextInt()、nextDouble()
? 利用这些方法,可以输入用户的各种数据
Scanner a =new Scanner(System.in);//定义一个扫描器,用于接收用户输入数据
int m =0;//定义一个int数,用于计算接收多少个数据
double c = 0.0;//定义一个double数,用于计算接收数据的总和
while(a.hasNextDouble()){//用于接收用户输入的数字数据
m++;//每输入一个数据,数据个数+1
double b = a.nextDouble();//定义一个变量,用于收集用户输入数据
System.out.println("你已输入"+m+"个数据");//用于提示输入的数据个数
c+=b;//用于计算接收数据总和
System.out.println("总数为"+c);//输出当前接收数据总和
System.out.println("平均数为"+c/m);//输出当前接收数据的平均数
}
System.out.println("程序结束");//一旦输入数字以外的数据,用于提示用户程序停止
a.close();//关闭IO流,节省资源
结构
顺序结构
? Java最基本的结构就是顺序结构,除非特别指明,否则将按照顺序一句一句执行
它是任何一个算法都离不开的一种基本算法结构
选择结构
if单选择结构
语法:
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
if双选择结构
语法:
if(布尔表达式){
//布尔表达式结果为true时执行的语句
}else{
//布尔表达式结果为false时执行的语句
}
if多选择结构
语法:
if(布尔表达式1){
//布尔表达式1的值为true,则执行该语句
}else if(布尔表达式2){
//布尔表达式2的值为true,则执行该语句
}else if(布尔表达式3){
//布尔表达式3的值为true,则执行该语句
}else{
//如果以上布尔表达式的值都不为true,则执行该语句
}
嵌套的if结构
语法:
if(布尔表达式1){
//如果布尔表达式的值为true,则执行该语句
if(布尔表达式2){
//如果布尔表达式的值为true,则执行该语句
}
}
switch多选择结构
? switch case语句判断一个变量与一系列值中某个值是否相等,每一个值都是一个分支
? 语法:
switch(表达式){
case value1://如果为值1,则执行该语句
//语句
break;//用于结束循环,可选
case value2://如果为值2 ,则执行该语句
//语句
break;//结束循环,可选
default://若以上值都没有,则执行该语句,可选
//语句
}
? switch语句中的变量类型可以是:
- byte、short、int或者char
- 从Java SE7开始,switch支持字符串string类型
- case标签必须为字符串常量或字面量
注意:
- case语句具有穿透性,如果没有break语句结束循环,在case语句匹配到相应的值后,会将接下来的没有break语句的case语句输出,直到有break语句的case语句
循环结构
while循环
? while循环时最基本的循环
语法:
while(布尔表达式){
//循环内容
}
注意:
- 只要布尔表达式的值为true,循环就会一直执行下去
- 大多数情况下,我们会让循环停止下来,因此需要一个让表达式值为false的方式来结束循环
- 少数情况下需要循环一直执行,如检查服务器是否响应
- 循环条件一直为true则会造成死循环,一般应避免死循环,导致程序卡死崩溃
do...while循环
? do...while循环与while循环相似,不同的是,do...while训话至少会执行一次
语法:
do{
//代码语句
}while(布尔表达式)
do...while和while的区别:
- while先判断后执行,do...while先执行后判断
- do...while总是保证循环体至少被执行一次,这是他们的主要差别
For循环
? for循环语句是支持迭代的一种通用结构,**是最有效、最灵活的循环结构
语法:
for(初始化;布尔表达式;更新){
//代码语句
}
? for循环中的语句可以是空语句
for(;;){//这是一个死循环
}
增强for循环
? 主要用于数组或集合
语法:
for(声明语句:表达式){
//代码语句
}
- 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,作用域限定在循环语句块,其值与此时数组元素的值相等
- 表达式:表达式时要访问的数组名,或者是返回值为数组的方法
)
break&continue
? break在任何循环语句的主体部分,均可用break控制循环的流程,break用于强制退出循环,不执行循环中剩余的语句
? continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
?