流程结构
所有问题都可以通过顺序结构,选择结构,循环结构来解决
一、顺序结构
顾名思义,顺序结构就是自上而下的,按照代码顺序执行的结构
System.out.println("hello,1");
System.out.println("hello,2");
System.out.println("hello,3");
二、选择结构
if 语句
if单选择结构
,if双选择结构
,if多选择结构
//单选择
Scanner scanner = new Scanner(System.in);
if(scanner.hasNextLine()){
String str = scanner.next();
System.out.println(str);
}
//双选择
if(scanner.hasNextLine()){
String str = scanner.next();
System.out.println(str);
}else{
System.out.println("nothing");
}
//多选择
if(scanner.hasNextLine()){
String str = scanner.next();
System.out.println(str);
}else if(a > b) { // a>b仅为举例,其他返回boolean值的语句均可
System.out.println("no idea");
}else{
System.out.println("nothing");
}
switch 语句
除了if多选择结构,还有switch多选择结构
判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
switch语句中的变量类型可以是byte
, short
, int
, char
- 从Java SE 7开始,switch开始支持字符串
String
类型了!!! - 字符串本质还是数字,通过
String
类型的值对应的hashcode进行匹配
switch(expression){
case value :
//语句
break;
case value :
//语句
break;
case value :
//语句
break;
default : //可选
//语句
}
case穿透
如果case
中不写break
去终止的话,switch匹配成功以后会把下面的所有情况全部输出直到下一个break
或全部走完
switch
和if
相比,if
判断区间会比较方便,switch
是匹配一个具体的值
三、循环结构
while
, do...while
, for
, 以及在Java 5中引进的主要用于数组的增强型for each
循环
1、while 循环
while(布尔表达式){
//循环内容
}
我们大多数情况下是会让循环停下来的,所以需要一个让表达式失效的方式来结束循环
少部分情况是需要循环一直执行,如服务器的请求响应监听,等待客户端连接,定时检查等
2、do…while 循环
do {
//代码语句
} while(布尔表达式);
while
是先判断后执行,do...while
是先执行后判断,do...while
保证循环体 至少会执行一次
3、for循环
for(初始化; 布尔表达式; 更新){
//代码语句
}
for(int i = 0; i < 100; i++){
//代码语句
}
for
循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
for
循环执行的次数是在执行前就确定的
for循环的小练习
- 计算0到100之间的奇数和偶数的和
- 用
while
或for
循环输出1-1000之间能被5整除的数,并且每行输出3个 - 打印九九乘法表
- 打印三角形
4、增强for循环
Java 5
引入的主要作用与数组或集合的增强型for
循环
for (声明语句:表达式){
//代码语句
}
int[] nums = {10, 20, 30, 40}
//遍历数组的元素
for (int x : nums){
System.out.println(x);
}
- 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等。
- 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
5、break, continue, goto
break
在任何循环语句的主体部分,均可用break控制循环的流程。用于强行退出循环,不执行循环中剩余的语句(在switch
语句中也使用)。
continue
在循环语句中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
goto
关键字很早就在程序设计语言中出现,尽管仍是Java中的保留字,但并未在语言中得到正式使用。Java没有goto
,然而在break
和continue
身上可以看到一些goto
的影子===>带标签的break
和continue
。- 标签是指在后面跟一个冒号的标识符,例如:
label:
- 对Java来说唯一用到标签的地方是在循环语句之前。通常
break
和continue
只会中断当前循环,如果我们需要使用嵌套循环,在外循环之前设置标签,这样我们在嵌套的循环里使用break
或continue
的时候,就会中断到存在标签的地方。
- 标签是指在后面跟一个冒号的标识符,例如:
//打印101~105之间的质数
outer:for(int i = 101; i < 150; i++){
for(int j = 2; j < i/2; j++){
if(i % j == 0){
continue outer;
}
}
System.out.print(i + " ");
}
练习的答案网上应该有很多,之后有机会再添上吧^ ^