Java流程控制 ---- 基础阶段
文章目录
1. 用户交互Scanner
Scanner 对象
- Scanner 是Java给我们提供实现人机交互的一个工具类,我们可以获取用户的输入。java.util.Scanner 是 Java5的新特性,我们可以通过 Scanner 类来获取用户的输入。
- 基本语法:
Scanner s = new Scanner(System.in);
- 通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据。
- 一个简单的运用:
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
//1.使用next 方式接收输入
System.out.println("使用 Next 方式接收:");
String str = scanner.next(); //当执行到此行时,会等待用户输入完毕才执行下一段
System.out.println("输出的内容为:"+ str);
//2.使用nextLine 方式接收输入
System.out.println("使用 NextLine 方式接收:");
String str2 = scanner.next();
System.out.println("输出的内容为:" + str2);
//凡是属于IO流的类如果不关闭会一直占用资源,需要在使用完后就关掉
scanner.close();
- Next() 和 NextLine() 的区别
- next()
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 只有输入有效字符后才能将其后输入的空白作为分隔符或结束符
- next() 不能得到带有空格的字符串
- nextLine()
- 以 Enter 为结束符,也就是说 nextLine() 方法返回的是输入回车之前的所有字符。
- 可以获得空白。
2. 顺序结构
- Java的基本机构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
- 顺序结构是最简单的算法结构
- 语句与语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构
3. 选择结构
- if 单选择结构
if(布尔表达式){
//如果布尔表达式为true将执行的语句
}
- if 双选择结构
if(布尔表达式){
//布尔表达式的值为true
}else{
//布尔表达式的值为false
}
- if 多选择结构
if(表达式1){
}else if(表达式2){
}else if(表达式3){
}else{
}
- 嵌套的 if 结构
if(布尔表达式1){
//布尔表达式1的值为true执行
if(布尔表达式2){
//布尔表达式2的值为true执行
}
//满足表达式1却不满足2
}
- switch多选择结构
switch(expression){
case value :
//语句
break;//可选
...
default : //可选 -- 都不满足时执行
//语句
}
//简单来说就是判断expression中的值是否与case中的value相等,如果相等则执行对象value下的语句。如果其中有break,则在执行后结束,如果没有,则向下继续执行,这也叫“case穿透现象”
4. 循环结构
注:while和do…while的区别:
- while 先判断后执行,do…while先执行后判断
- do…while 总是保证循环体至少会被执行一次!这是他们的主要差别。
-
while循环
- 我们大多数情况是会让循环停止下来,我们需要一个让表达式失效的方式来结束循环。
- 循环条件一直为true就会造成无线循环(死循环),正常的业务中应该避免死循环。
while(布尔表达式){ //循环内容 }
-
do…while循环
- 即使布尔表达式值不为true,还是能执行一次代码语句
do { //代码语句 } while(布尔表达式);
-
for 循环
- for循环
for(初始化;布尔表达式;更新){ //代码语句 }
//练习:打印九九乘法表 ---- 编程重要的是理清思路 public static void main(String[] args) { //练习3:打印99乘法表 //1.先打印第一列,也就是1乘到9 //2.我们把固定的1再用一个循环包起来 //3.去掉重复项,i <= j //4.调整样式 for (int j = 1; j <= 9; j++) { for (int i = 1; i <= j; i++) { System.out.print(j + "*" + i + "=" + (j * i) + "\t"); } System.out.println(); } }
-
增强 for 循环 — 用于循环数组或者集合
//其中声明的语句相当于 循环之后的语句,表达式相当于 循环体(也就是循环什么) for(声明语句:表达式){ //代码语句 } //实例:增强for相当于for循环的简洁写法,实现的功能一样 int[] num = {10,20,30,40,50} for(int x : num){ System.out.println(x); }
5. break & continue
5.1 break
- 在任何循环语句的主体部分,均可用break控制循环的流程。
- 用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
5.2 continue
语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的规定。
6. 拓展
打印三角形
//打印三角形 打印5行
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
//打印一个倒三角 --- 后面使其变为空白
for (int j = 5; j >= i; j--) {
System.out.print(" ");
}
//打印三角形左半边
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
//打印三角形右半边
for (int j = 1; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}