Java流程控制
Scanner对象
-
java.util.Scanner 可以通过Scanner获取用户的的输入
-
基本语法
Scanner s = new Scanner(System.in); -
通过Scanner类的next()与nextLine()方法获取输入的字符串,再度取前我们一般需要使用hasNext()与hasNextLine()判断是否有输入数据。
-
使用完及时关闭。
scanner.close()
next()
-
一定要读取到有效字符后才可以结束输入
-
对输入的有效字符之前用到的空白,next()方法会自动将其舍掉。
-
只有输入有效字符后才将其后面的空白作为分隔符或者结束符。
-
next()不能得到带有空格的字符。
import java.util.Scanner; public class Demo01 { public static void main(String[] args) { //创建一个扫描器对象 Scanner scanner = new Scanner(System.in); System.out.println("使用next方法接收:"); //判断用户有没有输入字符串 if (scanner.hasNext()){ String str = scanner.next(); System.out.println("输入的内容为:"+str); } //凡是属于IO流的类如果不关闭就会一直占用资源,养成良好的习惯用完关掉。 scanner.close(); } }输入hello word返回只有hello,空格及之后的word被舍去。
nextLine()
-
以Enter作为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
-
可以获得空白。
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方法接收:");
//判断用户有没有输入字符串
if (scanner.hasNext()){
String str = scanner.next();
System.out.println("输入的内容为:"+str);
}
//凡是属于IO流的类如果不关闭就会一直占用资源,养成良好的习惯用完关掉。
scanner.close();
}
}
输入hello word,输出hello word
顺序结构
-
Java的基本结构就是顺序结构
-
程序从上往下依次执行
package struct; public class SequenceDemo01 { public static void main(String[] args) { System.out.println("hello1"); System.out.println("hello2"); System.out.println("hello3"); System.out.println("hello4"); System.out.println("hello5"); } }
执行结果
hello1
hello2
hello3
hello4
hello5
选择结构
-
if单选择结构
-
我们判断一个东西是否可行,然后我们去执行,这样的一个过程在程序中用if语句来表示。
-
语法
if(布尔表达式){ //如果表达式为ture将执行语句 }package struct; import java.util.Scanner; public class IfDemo01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个内容:"); String s = scanner.nextLine(); //equals:判断字符串是否相等 if (s.equals("hello")){ System.out.println(s); } System.out.println("End"); scanner.close(); } }输入“hello”,则输出:
hello End输入“你好“,则输出:
End
-
-
if双选择结构
-
语法
if(布尔表达式){ //如果表达式为true则执行 }else{ //如果表达式为false则执行 }
示例
package struct; import java.util.Scanner; public class IfDemo02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //考试分数大于60及格,小于60则不及格 System.out.println("请输入成绩:"); double score = scanner.nextDouble(); if (score >= 60){ System.out.println("及格"); }else{ System.out.println("不及格"); } } } -
-
if多选择结构
-
语法
if(布尔表达式1){ //如果表达式1的值为true,则执行代码; }else if(布尔表达式2){ //如果表达式2的值为true,则执行代码; }else if(布尔表达式3){ //如果表达式4的值为true,则执行代码; }else { //如果以上表达式都不为true,则执行代码。 }
示例
package struct; import java.util.Scanner; public class IfDemo03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //考试分数大于60及格,小于60则不及格 System.out.println("请输入成绩:"); double score = scanner.nextDouble(); if (score == 100){ System.out.println("恭喜满分"); }else if (score<100 && score>=90){ System.out.println("A级"); }else if (score<90 && score>=80){ System.out.println("B级"); }else if (score<80 && score>=60){ System.out.println("C级"); }else if (score<60 && score>=0){ System.out.println("D级"); }else{ System.out.println("成绩不合法"); } scanner.close(); } } -
-
switch多选择结构
- switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
- switch 语句中变量的类型可以为
- byte、short、int、或者char/
- 从Java SE7 开始switch支持字符串String类型了。
- 同时case 标签必须为字符串常量或字面量。
例子:
package struct; import java.util.Scanner; public class SwitchDemo01 { public static void main(String[] args) { //case穿透:没写break Scanner scanner = new Scanner(System.in); String s = scanner.next(); char grade = s.charAt(0); switch (grade){ case 'B': System.out.println("良好"); break;//可选 case 'C': System.out.println("及格"); break;//可选 case 'D': System.out.println("挂科"); break;//可选 default: System.out.println("未知等级"); } } }
循环结构
-
while循环
-
while是最基本的循环
while(布尔表达式){ //循环内容 } -
只要布尔表达式为true,循环就会一直循环下去
-
我们大多数情况会让循环停下来,我们需要让一个表达式来结束循环
-
少部分情况循环会一直执行,比如服务器的请求响应监听。
package struct; public class WhileDemo03 { public static void main(String[] args) { //计算 1+2+3+4+·····+100 //高斯的故事 int i = 0; int mun = 0; while (i<100){ i++; mun=mun+i; System.out.println("+"+i); } System.out.println(mun); } }
-
-
do-while
-
对于while语句而言,如果不满足条件,则不能进入循环。又有时候我们即使不满足条件,也要至少执行一次。
-
格式
do { //代码语句 }while(布尔表达式); -
while和do-while的区别
- while先判断后执行
- Do...while总是保证循环体最少执行一次。
-
-
for循环
-
虽然所有的循环都可以使用while或者do-while表示,但是—for循环可以使循环变得更加简单。
-
for循环语句是支持迭代的一种通用结构,最有效、最灵活的循环结构。
-
for循环的执行次数实在执行前就确定的。语法格式如下:
for(初始化;布尔表达式;更新){ //代码语句 } -
IDEA高效写法:以100次迭代循环为例
100.for
-
break和continue
- break在任何循环语句的主体部分,均可用break控制循环的流程。用于强行退出循环不执行剩余语句。
- continiue语句用于终止某次循环过程,用于跳过某次循环剩余步骤,即跳过循环体中未执行的语句,直接进行下一次是否执行循环的判定。
goto关键字
- goto关键字很在就在程序设计语言中出现。尽管goto认识Java的一个保留字,但仍未在语言中正式使用;Java没有goto。然而,在break和continue这两个关键字的身上,我们任然能看出一些goto的影子---单标签的break和continue。
- “标签”是指后面跟一个冒号的标识符,列如:label:
- 对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一的理由是:我们希望在其嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但随着标签使用,他们就会中断到存在标签的地方。
练习
-
打印直角三角形
- 逐行打印(for循环双层嵌套)
public class StructDemo { //用“*”画一个等腰三角形 public static void main(String[] args) { for (int i = 5; i >= 1; i--) {//规定三角形的行数为5 //打印一个倒直角三角形 for (int j = 1;j <= i;j++) { System.out.print(" "); } //打印左边直角三角形 for(int k = 5;k >= i;k--){ System.out.print("*"); } //打印右边直角三角形 for(int k = 4;k >= i;k--){ System.out.print("*"); } System.out.println(); } } }
浙公网安备 33010602011771号