Java流程控制
1.用户交互的Scanner
-
在java.util.Scanner中
-
基本语法:
Scanner s = new Scanner(System.in);
-
通过Scanner类的next()和nextLine()方法来获取输入的字符串,在读取前,我们一般需要使用**hasNext()与hasNextLine()**判断是否还有输入的数据。
//用**next()**接收
package com.kuang.scanner; import java.util.Scanner; public class Demo1{ public static void main(String[] args){ //创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); //用next方式接收对象 if(scanner.hasNext()){//如果下一个还有输入 String str=scanner.next();//就将输入的String赋值给str System.out.println(str); } //凡是属于IO流的类如果不关闭会一直占用资源,要养成良好的习惯 scanner.close(); } } //输入hello world //输出hello
//用**nextLine()**接收
package com.kuang.scanner; import java.util.Scanner; public class Demo1{ public static void main(String[] args){ //创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); //用nextLine方式接收对象 if(scanner.hasNextLine()){//如果下一个还有输入 String str=scanner.nextLine();//就将输入的String赋值给str System.out.println(str); } //也可以不用if语句判断是否还有输入,直接可以这样写 /* Scanner sc = new Scanner(System.in); System.out.println("请输入数据:"); String str = sc.nextLine(); sc.close(); */ //凡是属于IO流的类如果不关闭会一直占用资源,要养成良好的习惯 scanner.close(); } } //输入hello world //输出hello world
next:
- 一定要读取有效字符后才可以结束输入
- 对输入的有效字符之前遇到的空白,next()方法会自动去除
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
nextLine():
- 以Enter作为结束符,nextLine()方法返回的是输入回车前的所有字符
- 可以获取空白
接收其他不同的类型
接收Int
if(scanner.hasNextInt()){//判断输入下一个是否是整数 int i = scanner.nextInt(); } while(scanner.hasNextInt()){//一直输入数字,直到输入的数字不是int类型 int i = scanner.nextInt(); }
接收Float
if(scanner.hasNextFloat()){ flaot f = scanner.nextFloat();
接收其他类型
nextDouble nextByte nextShort …………
2.顺序结构
- 从上到下依次执行,不多说
3.选择结构
- if单选择结构
if( ){
//true
}
- if双选择结构
if(){
//true
}else{
//false
}
- if多选择结构
if(){
//true
}else if(){
//true
}else if(){
//true
}else{
//false
}
- 嵌套的if结构
if(){
//1 true
if(){
//2 true
}
}
- switch多选择结构
switch(expression){
case value1 :
break;
case value2 :
break;
case value3 :
break;
default ://上述条件都不成立,就用default
}
//如果break掉了,就会发生case穿透现象,所有case都会执行
switch语句中的expression可以是:
- byte , short , int ,char。
- 从Java SE 7 开始, switch 支持字符串String类型
- 同时case标签必须为字符串常量或者字面量
switch的反编译(源码):详见狂神说java
//反编译 java---->class(字节码文件)
找到项目结构
找到项目输出之后的路径
打开路径
找到class文件
然后在IDEA里面打开show in explore//打开文件夹
然后将class拷入打开的文件夹,打开就可以看源码
4.循环结构
- while循环
while(true/false){
}
//先判断再执行
- do…while循环
do{
}while();
//先执行,再判断
如果不满足条件,也让程序至少执行一次
- for循环
for(初始化;布尔表达式;更新){
}
//例子
for(int i=0;i<=100;i++){
}
//IDEA里面有直接生成for循环代码的语句
输入:5.for
生成:for(int i=0;i<5;i++){//生成循环5次的代码
}
- !!!Java5 中引入了一种朱亚鹏用于数组的增强型for循环
for(声明语句 : 表达式){
//代码句子
}
//主要用于遍历数组和集合
//声明语句: 声明一个新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块内,其值与此时数组元素的值相等
//表达式: 表达式是要访问的数组名,或者是返回值为数组的方法。
public class test{
public static void main(String[] args){
int[] num={1,2,3,4,5};//定义一个数组
for(int x:num){
System.out.println(x);
}
}
}
/*
输出:
1
2
3
4
5
*/
5.break 和 continue
break
用于强制退出循环,不执行剩下的语句
continue
用于终止某次循环,跳过余下的语句,执行下一次循环