Java入门(三)流程控制
一 用户交互Scanner
我们可以用Scanner类来获取用户的输入
基本语法
next()方法
Scanner sc = new Scanner(System.in);
String s = "";
if (sc.hasNext()){
s = sc.next();//输入Hello World
}
System.out.println(s);//输出Hello,sc.next()方法只会扫描有效字符,空格之后的会自动忽略,也就是说空格,制表符,回车都是结束标志
nextLine()方法
Scanner sc = new Scanner(System.in);
String s = "";
if (sc.hasNextLine()){
s = sc.nextLine();//输入Hello World
}
System.out.println(s);//输出Hello World,只有回车是结束标志
还有诸如,nextInt():接收一个int型数据,nextDouble():接收一个double型数据等等
二 顺序结构
- java的基本结构就是顺序结构,除非特别指明,否则就按顺序一步一步执行
- 顺序结构是最简单的算法结构
- 它是任何一个算法都离不开的基本算法结构
System.out.println("Hello1");
System.out.println("Hello2");
System.out.println("Hello3");
System.out.println("Hello4");
System.out.println("Hello5");
System.out.println("Hello6");
三 选择结构
if单选择结构
我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用 if 语句来表示
语法
//if (布尔表达式) {
// 执行语句
//}
int a = 5;
if (a > 3) {
System.out.println(a);//输出5
}
if双选择结构
当我们需要判断一个条件成立会去做一件事,否则会去做另一件事,这样就可以用if…else…来做
语法
/*
if (布尔表达式) {
执行语句
} else {
执行语句
}
*/
int a = 5;
if (a < 3) {
System.out.println(a);
} else {
System.out.println(3);//输出3
}
if多选择结构
但有时候还存在多种情况,双选择结构就不香了,这时候可以使用多选择结构
语法
/*
if (布尔表达式) {
执行语句
} else if (布尔表达式) {
执行语句
} else if (布尔表达式) {
执行语句
} else if (布尔表达式) {
执行语句
} else if (布尔表达式) {
执行语句
} else {
执行语句
}
*/
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();//输入90
if (score >= 0 && score < 60) {
System.out.println("不及格");
} else if (score >= 60 && score < 70) {
System.out.println("及格");
} else if (score >= 70 && score < 80) {
System.out.println("良好");
} else if (score >= 80 && score <= 100) {
System.out.println("优秀");//输出优秀
} else {
System.out.println("请输入正确的分数");
}
嵌套的if结构
我们可以在 if , else, else if 语句中嵌套使用 if, else, else if
语法
/*
if (布尔表达式) {
if (布尔表达式) {
} else {
if (布尔表达式) {
} else if (布尔表达式) {
}
}
} else {
if (布尔表达式) {
}
}
*/
int a = 10;
if (a > 5) {
if (a > 11){
System.out.println(11);
}else {
System.out.println(5);/输出5
}
} else {
if (a < 0) {
System.out.println(-1);
} else if (a > -1) {
System.out.println(0);
}
}
Switch多选择结构
类似于 if 多分支结构
/*
switch(变量){
case value:
语句
break;//可选
case value:
语句
break;//可选
case value:
语句
break;//可选
default://可选
语句
}
*/
int a = 10;
switch (a) {
case 10:
System.out.println(10);//输出10
break;
case 11:
System.out.println(11);
default:
System.out.println(12);
}
四 循环结构
while循环
-
while是最基本的循环,它的结构为
/* while (布尔表达式) { //循环内容 } */ int i = 3; while (i > 0) { System.out.println(i); i--; }
- 只要布尔表达式为true,循环就会一直重复下去
- 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环,比如上面的 i–
- 少部分情况需要循环一直执行,比如服务器的请求响应监听等
do while循环
-
对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次
-
do…while循环和while循环相似,不同的是,do…while循环至少会执行一次
/* do { //循环语句 } while(布尔表达式); */ int i = 1; do { System.out.println(i); } while(i > 2);
-
while和do…while的区别:
1)while先判断后执行,do…while是先执行后判断
2)do…while总是保证循环体至少会被执行一次
-
for循环
-
虽然所有循环结构都可以用while或do…while表示,但java提供了另一种语句——for循环,使一些循环结构变得更加简单
-
for循环是支持迭代的一种通用结构,是最有效、最灵活的循环结构
-
for循环执行的次数是在执行前就确定的。语法格式如下:
/* for (初始化;布尔表达式;更新) { //循环语句 } */ for (int i = 0;i < 3;i++) { System.out.println(i); }
-
九九乘法表
for (int i = 1;i <= 9;i++) { for (int j = 1;j <= i;j++) { System.out.print(j+" * "+i+" = "+i*j+"\t"); } System.out.println(); } /* 1 * 1 = 1 1 * 2 = 2 2 * 2 = 4 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81 */
-
增强for循环
java5引入了一种主要用于数组或集合的增强型for循环
语法格式如下
/*
for (集合或数组中的数据类型 变量名称 : 集合或数组) {
//循环语句
}
*/
int[] a = new int[5];
for (int b : a) {
System.out.println(b);
}
break、continue和goto
- break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不会执行剩下的循环次数
for (int i = 0;i <= 5;i++) {
if (i % 2 == 1) {
break;
}
System.out.println(i);//输出0
}
- continue也可以在任何循环语句的主体部分,用于终止某次循环过程,即跳过continue之后的语句,但不会减少循环次数
for (int i = 0;i <= 5;i++) {
if (i % 2 == 1) {
continue;
}
System.out.println(i);//输出0,2,4
}
-
goto关键字很早就在程序设计语言中出现过,尽管goto仍是java的一个保留字,但并未在语言中正式使用;java中没有goto,然而,在break和continue这两个关键字身上,我们仍然能看出一些goto的影子——带标签的break和continue
“标签”是指后面跟一个冒号的标识符,例如:a:
对于java来说唯一用到标签的地方是在循环语句之前,而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若同标签一起使用,就会中断到存在标签的地方
a:for (int i = 0;i <= 5;i++) { for (int j = 0;j <= 5;j++) { if (j == 1) { break a; } System.out.println(j);//输出0 } } a:for (int i = 0;i <= 5;i++) { for (int j = 0;j <= 5;j++) { if (j == 1) { continue a; } System.out.println(j);//输出6个0 } }
-
打印三角形
for (int i = 0; i < 5; i++) { for (int j = 5 - i;j > 0;j--){ System.out.print(" "); } for (int j = 0;j <= i;j++){ System.out.print("*"); } for (int j = 0;j < i;j++) { System.out.print("*"); } System.out.println(); } /* * *** ***** ******* ********* */
-