java 流程控制
用户交互Scanner
scanner 对象
java 提供了一个工具类,我们可以获取用户输入.
java.util.Scanner 是java5的一个新特征,我们可以通过Scanner 类来获取用户的输入
//基本语法
Scanner s= new Scanner(system.in);
//举例1 next 方法
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()){
//使用next 接受
String str = scanner.next();
System.out.println("输出内容为:"+ str);
}
//凡是属于IO流(输入输出)的类如果不关闭会一直占用资源,要养成良好习惯,用完就关掉!!!
scanner.close();
}
}
//举例2 nextLine 方法
public class Demo01 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("使用next方式接受");
if (scanner.hasNextLine()){
//使用next 接受
String str = scanner.nextLine();
System.out.println("输出内容为:"+ str);
}
//凡是属于IO流(输入输出)的类如果不关闭会一直占用资源,要养成良好习惯,用完就关掉!!!
scanner.close();
}
}
//不用if 判断
public class Demo03 {
public static void main(String[] args) {
Scanner scanner= new Scanner(System.in);
System.out.println("请输入数据:");
String str=scanner.nextLine();
System.out.println("输出内容为:"+str);
scanner.close();
}
}
通过Scanner 类的next()与nextline()方式获取输入的字符串,在读取前我们一般需要 使用 hasNet()与hasNextLine()判断是否还有输入的数据!
两个方法的区别如下:
next():
- 一定要读取到有效字符串后才可以结束输入
- 对输入有效字符之前遇到的空白,next方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。 (输入 Hello World ,输出只有Hello)
- next不能得到含有空格的字符串
nextLine():
-
以回车为结束符,即nextLine 方法返回的是输入回车符之前所有的字符。
-
可以获得空白(输入 Hello World 输出 Hello World)
一个小任务
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
//输入多个数字,并求其总和与平均收入,每输入一个数字用回车键键确认,通过输入 非数字来结束输入并输出执行结果
Scanner scanner= new Scanner(System.in);
double sum=0;
//计算输入多少个数字
int m=0;
//通过循环判断是否还有输入,并在里面对每一次进行求和统计
System.out.println("请输入多个数字");
while(scanner.hasNextDouble()){
double x= scanner.nextDouble();
m = m+1;
sum = sum +x;
}
System.out.println(m +"个数的和为"+sum);
System.out.println(m + "个数的平均值为" + sum/m);
scanner.close();
}
}
流程控制
-
顺序结构
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{ //如果以上表达式均==false则执行当前语句 }
-
嵌套 if 结构
if (布尔表达式1){ //如果表达式1==true则执行当前语句 if(布尔表达式2){ //如果表达式2==true则执行当前语句 }
-
switch 多选择结构
匹配一个具体的值。支持 int,short,long,char,String(java7)
如果不加break,那么在执行完当前case语句后,后面语句也会全部被执行。
switch(expression){ case value: //语句 break; case value: break; default: //语句 }
-
-
循环结构
-
while 循环
while(布尔表达式){ //循环内容 }
只要布尔表达式为true,循环就会一直执行下去。
我们大多数情况会让循环停止下来,我们需要一个让表达式失效的方式来结束循环
少部分情况需要一直循环,例如服务器监听。
尽量避免死循环!!
-
do…while 循环
对于while 语句而言,如果不满足条件,则不能进入循环,但有时我们需要及时不满足条件也至少执行一次!
do…while 至少会执行一次。
do{ //代码语句 }while(布尔表达式)
两者区别
while 先判断再执行
do while 先执行后判断
-
for 循环(重要!!!!)
让循环结构变得简单
for(初始化;布尔表达式;更新){ //代码语句 } /* 几点说明: 最先执行初始化步骤。可以声明一种类型,但可以初始化一个或多个循环控制变量,也可以是空语句。 然后检测布尔表达式的值,如果为true,循环体被执行,如果为false,循环终止,开始执行循环后面的语句。 再次检测布尔表达式。循环执行上面过程 */
java5中引入了一种主要用于数组的增强型for 循环。
for(声明语句:表达式) { 执行语句 }
-
break & continue&goto
break:用来强行跳出循环,不执行循环中剩余语句!
continue: 用于终止某次循环过程,即跳过循环体中尚未执行的语句,继续下一次是否执行循环的判定。
goto:java 本身无goto。但可以通过break和continue+标签实现goto
-