Java流程控制
1、Scanner对象
①java.util.Scanner是Java5的新特性,可以通过Scanner类来获取用户的输入。
②基本语法:
1 Scanner s=new Scanner(System.in);
③通过next()和nextLine()方法接受用户输入,通过hasNext()和hasNextLine()方法来判断用户是否输入
next()要点:
1.一定要读取到有效字符后才可以结束输入
2.对输入有效字符前遇到的空白,next()方法会自动将其去掉
3.只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
4.next()不能得到带有空格的字符串
nextLine()要点:
1.以Enter为结束符,返回的是输入回车之前的所有字符
2.可以获得带有空格的字符串
1 //创建一个扫描器对象,用于接收键盘数据
2 Scanner scanner=new Scanner(System.in);
3
4 System.out.print("用next方式接收:");
5 //判断用户有没有输入字符串
6 if(scanner.hasNext()){
7 String str=scanner.next();
8 System.out.print("输出的内容为:"+str+"\n");
9 }
10
11 System.out.print("用nextLine方式接收:");
12 if(scanner.hasNextLine()){
13 String str=scanner.nextLine();
14 System.out.print("输出的内容为:"+str+"\n");
15 }
16
17 //凡是属于IO流的类如果不关闭会一直占用资源,要用完就关掉
18 scanner.close();
2、顺序结构
Java的基本结构就是顺序结构,任何算法都离不开这种结构。
语句与语句之间,框与框之间是按从上到下的顺序进行的。
3、if选择结构
①if单选择结构
if(布尔表达式){
//表达式为true则执行语句
}
②if双选择结构
if(布尔表达式){
//表达式为true则执行语句
}else{
//表达式为false则执行语句
}
③if多选择结构
if(布尔表达式1){
//表达式1为true则执行语句
}else if(布尔表达式2){
//表达式2为true则执行语句
}else if(布尔表达式3){
//表达式3为true则执行语句
}else{
//如果以上表达式都为false则执行语句
}
④嵌套的if结构
可以在if语句中再添加if语句,也就是嵌套使用
注意点:1.if语句至多有一个else语句,else语句在所有的else if语句之后
2.if语句可以有多个else if语句,但必须在else语句前面
3.一旦其中一个else if语句检测为true,其他的else if以及else语句都将跳过执行
4、switch多选择结构
switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
swicth(expression){
case value1:
//语句
break;//可选
case value2:
//语句
break;//可选
//你可以有任意数量的case语句
default://可选
//语句
}
注意点:1.switch就相当于匹配一个具体的值
2.每个case后面都应当匹配一个break,否则会出现穿透现象,也就是某个case匹配符合后,会一直从上往下运行,直到遇到一个break语句或者语句执行完成
3.switch语句中的变量类型可以是byte、short、int、char,从Java SE7开始支持字符串String类型
5、while循环结构
while是最基本的循环,只要布尔表达式是true,循环就会一直执行下去。大多数情况下是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。while循环先判断后执行。
while(布尔表达式){
//循环内容
}
6、Do—while循环结构
Do—while循环先执行后判断;即使不满足条件,也至少执行一次
do{
//循环内容
}while(布尔表达式);
7、for循环结构
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构;for循环的执行次数在执行前就已经确定
for(初始化;布尔表达式;更新){
//代码语句
}
注意点:1.初始化、布尔表达式、更新都可以是空语句
2.布尔表达式值为true则执行语句,否则结束执行
练习题:打印九九乘法表
1 public class Demo3 {
2 //打印九九乘法表
3 public static void main(String[] args) {
4 for(int i=1;i<=9;i++){
5 for(int j=1;j<=i;j++){
6 System.out.print(i+"*"+j+"="+i*j+"\t");
7 }
8 System.out.print("\n");
9 }
10 }
11 }
增强for循环
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配;其作用域限定在循环语句块,其值与此时数据元素的值相等
表达式:要访问的数组名,或者是返回值为数组的方法
for(声明语句:表达式){
//代码句子
}
8、break和continue
break语句是结束循环
1 for(int i=0;i<=5;i++){
2 if(i==3){
3 break;
4 }
5 System.out.print(i+" ");
6 } //输出结果为0 1 2
continue语句是结束本次循环
1 for(int i=0;i<=5;i++){
2 if(i==3){
3 continue;
4 }
5 System.out.print(i+" ");
6 } //输出结果为0 1 2 4 5
练习题:打印三角形
1 public class Triangle {
2 //打印三角形
3 public static void main(String[] args) {
4 for(int i=1;i<=5;i++){
5 for(int j=5;j>=i;j--){ //打印每行空格
6 System.out.print(" ");
7 }
8 for(int k=1;k<=i;k++){ //打印中间及左边部分
9 System.out.print("*");
10 }
11 for(int k=1;k<i;k++){ //打印右边部分
12 System.out.print("*");
13 }
14 System.out.print("\n");
15 }
16 }
17 }
18
19 /*运行结果:
20 *
21 ***
22 *****
23 *******
24 *********
25 */