Java 语言-3 Java 流程控制
3.1 程序输入输出
-
应用程序(Java Application)的输入输出可以是文本界面,也可以是图形界面
-
小应用程序(Java Applet)则只能是图形化界面
-
文本界面:
- 使用 Sarnner 类,jdk5 以后的方法
- 使用 in 及 out (不展开)
3.1.1 Sarnner
-
在 Java 基本语法中没有实现程序和人的交互,Java 中给我们提供了一个 Sarnner 工具类,来获取用户的输入
-
java.util.Scanner 是 Java5 的新特征
-
Sarnner 包含的基本方法有: next()、nextLine()
- next() 与 nextLine() 的区别
- next()
- 一定要读取到有效字符后才结束输入
- 对于输入有效字符之前遇到的空白,next() 方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符
- next() 不能得到含有空格的字符串
- nextLine() 用得多
- 以 Enter 作为结束符,返回的是Enter以前的所有字符
- 可以获得空白
- next()
- next() 与 nextLine() 的区别
-
实例 Sarnner 对象语法:
-
Scanner s = new Sannner(System.in);
-
-
通过 Scanner 类的 next() 等方法获取输入的字符串,在读取前一般需要使用 hasNext() 或 hasNextLine() 判断是否还有输入的数据
-
例如:
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(); }
-
3.1.2 Sarnner 进阶运用
-
Sarnner 还有其他方法,比如:nextInt()、nextDouble()
Scanner scanner = new Scanner(System.in); int i = 0; float f =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();- 不仅数字还有其他类型
-
示例:输入 n 个数,求 n 个数的总和以及其平均值
-
Scanner scanner = new Scanner(System.in); double sum = 0; int i =0; while (scanner.hasNextDouble()){ double x = scanner.nextDouble(); i++; sum= sum + x; System.out.println("你输入了"+i+"个数,当前和为"+sum); } System.out.println(i+"个数和为"+sum); System.out.println(i+"个数平均数为"+(sum/i)); scanner.close();
-
3.2 顺序结构
- Java 的基本结构就是顺序结构,除非特别指明,否则就按照顺序一步步执行。
- 顺序结构是最简单的结构
- 图示:

- 图示:
- 语句与语句之间框与框之间是按照从上往下的顺序进行的,是由多个若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构
- 最简单的语句
- 方法调用语句
- 赋值语句
3.3 选择结构
-
if 单选择结构
-
在很多时候需要判断一个东西是否可行,然后去执行,这样的过程在程序中用 if 语句来表示
-
语法格式:
if(布尔表达式){ 语句块; }如果布尔表达式为 true 将执行的语句
-
例如:
-
Scanner scanner = new Scanner(System.in); System.out.println("请输入内容:"); String i = scanner.nextLine(); if (i.equals("Hello")){ System.out.println("输入的是Hello"); } System.out.println("输入的为其他"); scanner.close();
-
-
-
if 双选择结构
-
图示:

-
语法格式:
if(布尔表达式){ 语句块1; }else{ 语句块2; }
-
-
if 多选择结构
-
图示:

-
语法格式:
if(布尔表达式){ 语句块1; }elif{ 语句块2; }else{ 语句块3; }
-
-
嵌套 if 语句
-
在一个if语句或者elif语句中使用if或者elif语句
-
语法格式:
if(布尔表达式){ 语句块1; if(布尔表达式){ 语句块2; } }
-
-
switch 多选择结构
-
switch 语句判断一个变量的一系列值中某个值是否相等,每个值称为分支
-
语法格式:
switch(expression){ case value: break; case value: break; default: break; }switch:匹配一个值
可以有任意的 case 语句
default:可选
如果有 break 会发生 case 穿透现象
-
switch 语句中的变量类型可以是:整数、字符、字符串
-
从 JavaSE7 开始支持 string 类型
-
同时 case 标签必须为字符串常量或者字面量
- jdk7 新特性,字符本质还是数字,可以通过反编译 Java 查看
-
-
3.4 循环结构
-
循环五要素
- 初始化部分、循环条件、循环体部分、迭代部分、结束后处理
-
while 循环
-
while 是最基本的循环结构,其语法格式为:
while(布尔表达式){ 循环体; }只要布尔结果为 true,循环就会一直跑下去
- 大多数情况下我们会让循环停下来,通过让表达式失效的方式来结束循环
- 少部分情况需要循环一直跑下去,比如服务器监听
- 循环条件一直为 true 就会造成无限循环【死循环】,正常业务编程中应该尽量避免死循环
- 会影响程序性能或者照成程序卡死
-
例如:计算 1+2+……+100=?
int i = 0; int sum =0; while (i < 100){ i++; sum = sum+i; } System.out.println("1+2+……+100="+sum);
-
-
do…while 循环
-
对于 while 循环而言,不满足条件是不能进入循环。但是有时候我们需要即使不满足条件也要执行一次。就需要便用到 do…while
-
do…while 与 while 类似,不同的是,do…while 至少会执行一次
-
语法格式:
do{ 循环体; }while(布尔表达式); -
while 和 do…while 的区别
- while 先判断条件再循环,do…while 先循环一次再判断条件
-
-
for 循环
-
for 循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
-
for 循环执行的次数是在执行前就确定的,语法格式:
for(初始化,布尔表达式,迭代){ 循环体; } -
快捷键调出(idea):
fori或5.for -
有关 for 循环的几点说明
-
最先执行初始化步骤。可以声明一种类型。可初始化一个或多个循环控制变量,也可以是空语句
-
再检查布尔值表达式的值,如果为 True,进入循环体;如果为 False,终止循环,开始执行循环后的语句
-
执行完一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)
-
再次检测布尔值表达式……
-
-
-
增强 for 循环 。暂时先了解
-
在 Jdk5 引进了增强型 for 循环
-
主要用于数组和集合,这种语句是只读式的遍历
-
语法格式:
for(声明语句:表达式){ …… }声明语句:声明新的局部变量,该变量的类型与对应的数组类型匹配。其作用域限定在循环语句块,其数值等于此时数组元素的值
表达式:要访问的数组名,或者是返回值为数组的方法
-
例如:
int[] numbers={12,12,12,12}; //定义数组 for (int x:numbers) { //遍历数组的元素 System.out.print(x+"\t"); }
-
-
3.5 特殊控制语句
-
goto 保留字
-
goto 是 java 的关键字,但是在 java 中未使用所以称为保留字
-
goto的影子在于:带标签的 break 和 continue 语句
- 标签是指后面跟一个冒号的标识符。如:
label:
- 标签是指后面跟一个冒号的标识符。如:
-
对于 java 来说唯一用到标签的地方是在循环语句之前
- 理由:如果希望在循环中嵌套另一个循环,由于 break 和 continue 关键字通常只中断当前循环,但若随标签一同使用,就会中断到存在标签的地方
-
例如:输出 101~500 的质数
-
int count = 0; outher:for (int i = 101; i < 150; i++) { for (int j =2; j<i/2;j++){ if (i % j==0){ continue outher; } } System.out.print(i+"\t");
-
-
-
break
-
可在任何循环语句的主要部分使用,break 用于强制退出循环,不执行循环体剩余的语句
-
其中,可用在循环使用标号来表名是哪重循环
…… labe11:{ …… labe12:{ …… labe13:{ …… break labe12; } } } -
switch 语句中也使用 break
-
-
continue
- 在循环体语句中用于终止某次循环,即跳过未执行的语句,接着进行下一次是否执行循环的判定
- 也可以通过标签指定调到那一层循环

浙公网安备 33010602011771号