7.1 Scanner对象
-
next()
- 一定要读取到有效字符串后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才能将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
-
nextLine()
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白
// 创建一个扫描器对象,用于接受键盘数据
Scanner sc = new Scanner(System.in);
System.out.println("输入内容为" + sc.next()); // Hello world → 输入内容为Hello
// IO流的操作如果不关闭会一直占用资源
sc.close();
// 创建一个扫描器对象,用于接受键盘数据
Scanner sc = new Scanner(System.in);
System.out.println("输入内容为" + sc.nextLine()); // Hello world → 输入内容为Hello world
// IO流的操作如果不关闭会一直占用资源
sc.close();
7.2 顺序结构
- Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
- 顺序结构是最简单的算法结构
- 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构
7.3 选择结构
-
if单选择结构
if (布尔表达式) { // 如果布尔表达式为true将执行的语句 }
-
if双选择结构
if (布尔表达式) { // 如果布尔表达式为ture将执行的语句 } else { // 如果布尔表达式为false将执行的语句 }
-
if多选择结构
// 一旦其中一个else if语句为true,其他的else if和else语句都将跳过执行 if (布尔表达式1) { // 如果布尔表达式1为ture将执行的语句 } else if (布尔表达式2) { // 如果布尔表达式2为ture将执行的语句 } else if (布尔表达式3) { // 如果布尔表达式3为ture将执行的语句 } else { // 如果以上布尔表达式都不为true将执行的语句 }
-
嵌套的if结构
if (布尔表达式1) { // 如果布尔表达式1为true将执行的语句 if (布尔表达式2) { // 如果布尔表达式2为true将执行的语句 } }
-
switch多选择结构
// switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支 // switch case语句中的变量可以是byte,short,int和char。从JDK7开始支持字符串String类型 // 虽然break语句可选,但是尽量加上,否则会出现case穿透 switch (expression) { case value : // 语句 break; // 可选 case value : // 语句 break; // 可选 defalut : // 可选 // 语句 }
// case穿透 // 没有break语句,输出结果为及格 挂科 未知等级 char grade = 'C'; switch (grade) { case 'A': System.out.println("优秀"); case 'B': System.out.println("良好"); case 'C': System.out.println("及格"); case 'D': System.out.println("挂科"); default: System.out.println("未知等级"); }
7.4 循环结构
-
while循环
// 只要布尔表达式为true,循环就会一直执行下去 // 大多数情况需要一个让表达式失效的方法来结束循环,避免死循环 while (布尔表达式) { // 循环内容 }
// 输出1-100 int i = 0; while (i < 100) { i++; System.out.println(i); }
-
do…while循环
// 先执行后判断,循环体至少被执行一次 do { // 代码语句 } while(布尔表达式)
// 输出1-100 int i = 0; do { i++; System.out.println(i); } while(i < 100);
-
for循环
// for循环语句是支持迭代的一种通用结构,是最有效最灵活的循环结构 for (初始化; 布尔表达式; 更新) { // 代码语句 }
// 练习1: 计算0-100之间奇数和偶数的和 int oddSum = 0; int evenSum = 0; for (int i = 0; i <=100; i++) { if (i % 2 != 0) { // 奇数 oddSum = oddSum + i; } else { // 偶数 evenSum = evenSum + i; } } System.out.println("奇数的和: " + oddSum); // 2500 System.out.println("偶数的和: " + evenSum); // 2550
// 练习2: 输出1-1000之间能被5整除的数,并且每行输出3个 int count = 0; for (int i = 1; i <= 1000; i++) { if (i % 5 == 0) { count = count + 1; System.out.print(i + "\t"); } if (count == 3) { System.out.print("\n"); count = 0; } }
// 练习3: 打印九九乘法表 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j + "*" + i + "=" + j * i + "\t"); } System.out.print("\n"); }
-
JDK5中引入了主要用于数组的增强for循环
for (申明语句 : 表达式) { // 代码语句 }
int[] numbers = {10, 20, 30, 40, 50}; // 遍历数组的元素 for (int num : numbers) { System.out.println(num); }
7.5 break continue
-
break: 用于强制退出循环,不执行循环中剩余的语句(如果是多重循环,只退出当前循环)
int i = 0; while (i < 100) { i++; System.out.println(i); if (i == 30) { break; } }
-
continue: 用于种植某次循环过程,即跳过循环中未执行的语句,接着进行下一次是否执行循环的判定
int i = 0; while (i < 100) { i++; if (i % 10 != 0) { continue; } System.out.println(i); }