结构语句
- 流程控制语句
- 循环语句
- while循环
- for循环实例一
- for循环实例二
- 跳出多重循环
- do...while循环
- 循环的应用场景
- 选择结构语句
流程控制语句
流程控制语句
if(条件){
true执行体;
}else if(条件){
true执行体;
}else if(条件){
true执行体;
}else{
执行体;
}
1.else if 可以有0-N个
2.else 可以有0-1个
3.所有分支仅仅只会执行一个
public static void main(String[] args) {
int a = 1;
int b = 2;
if (a == b ) {
System.out.println("1等于2");
}else {
System.out.println("1不等于2");//1不等于2
}
}
循环语句
1.while(conditions) {
block;
}
2.for(初始条件;conditions;增量){
block;
}
用于可迭代对象迭代的增强for循环
for (元素类型 x : 可迭代对象){
System.out.println(x);
}
3.do{
block;
}while(conditions);
和while的区别,这个do。。while中的循环体代码会无条件执行一次,再判断是否循环
while循环
public class Ran {
public static void main(String[] args) {
int a = 10;
double d = 11.0;
while(a < d) {//判断是否循环的条件
System.out.println("ss");//ss
a +=1;//增量,没有跳出循环的条件会造成死循环
}
}
}
for循环实例一
//九九乘法表——for循环嵌套
public class Ran {
public static void main(String[] args) {
for(int i = 1; i < 10; i++){
for(int y = 1 ; y <= i ; y ++) {
System.out.print(i + " * " + y + " = " + (((i * y) / 10 < 1) ? i * y + " " : i * y) + " ");
//print 不换行,在一行输出当前乘法表
}
System.out.println();//换行
//print 不换行 println 换行
}
//三元运算符 ((i * y) / 10 < 1) ? i * y + " " : i * y
//对于乘积的结果为个位数的后接一个空字符串作为占位
//以此和2位数的结果乘积做对齐
}
}
for循环实例二
//求十万以内的素数 (效率)
//素数:除了1和自身外没有其它的因数, 因数 * 因数 = 积
for(int i = 3; i < 100000 ; i += 2) {//偶数都能被2整除,一定不是素数,所以素数一定是奇数,i的增量为2
if (i > 10 && (i % 3 == 0 || i % 5 == 0 || i % 7 == 0)) {
//大于10的数中,偶数和3,5,7的倍数一定不是素数
continue;
}
for(int j = 3 ; j < (int)(Math.sqrt ((double)i) ) ; j += 2){
// j作为被除数, j += 2 ; 奇数 / 偶数一定是除不尽的
//如果一个数i是素数的话,它一定是一个奇数,它除以小于自身的任何数(除1以外)得到的都不是一个整数
//i 除以 偶数 得到的一定不是一个整数
//i 除以 奇数 得到的 如果也不是一个整数,那么这个数i一定是素数
//所以只需要将奇数作为除数即可
if (i % j == 0) { //将i对j进行取余,结果为0说明i不是素数,反之就一定是素数
break;
}
}
System.out.println(i);//打印10万以内的这个素数
}
跳出多重循环
//方式一 利用异常来终止多重循环
try {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("i=" + i + "; j=" + j);
if (j == 3) {
throw new Exception();
}
}
}
} catch (Exception e) {
System.out.println("e")
}
//方式二 给多重循环添加一个标记
x: for (String[] i : list) {
for (String j : i) {
if (j == "a") {
break x;
} else {
System.out.println(j);
}
}
do…while循环
int a = 10;
double d = 11.0;
do {
System.out.println("ss");//ss
a +=1;
System.out.println(a);//11
}while(a < d);
循环的应用场景
for适合于一个精确范围内的循环判断,while适合次数不明确的循环
break:结束最近的循环
continue:结束本次循环,进入下一次循环
配合循环使用
选择结构语句
switch(表达式){
case 常量1:
block;
break;
case 常量2:
block;
break;
case 常量3:
block;
break;
default:
block;
break;
}
case后面的值就是要和表达式的值进行比较,相同就执行block,遇到break结束整个switch
都不相同执行default下的block,然后break
break:表示程序到这里终止,跳出switch语句
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
default可以没有
表达式的值可以是byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
import java.util.Scanner;
public class Ran {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩评分A-E");
if (scan.hasNext()) {
switch (scan.next()) {
case "A":
System.out.println("优秀");
break;
case "B":
System.out.println("良好");
break;
case "C":
System.out.println("及格");
break;
case "D":
System.out.println("不及格");
break;
case "E":
System.out.println("差");
break;
default:
System.out.println("输入错误!");
break;
}
}
}
}
如果case中没有break,会发生case穿透,代码会继续执行下去,不会结束switch,直至遇到break为止
if (scan.hasNextInt()) {
switch (scan.nextInt()) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("今天是工作日");
break;
case 6:
case 7:
System.out.println("今天是休息日");
break;
default:
System.out.println("输入错误!");
break;
}
}