1、顺序结构
顺序结构
:代码按照顺序
逐行往下执行。
使用Scanner对象
从控制台读取数据。具体用法参见下面代码:
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args){
// 1.创建Scanner对象
Scanner scanner = new Scanner(System.in);
// 2.读取int类型数据
System.out.print("请输入整数:");
// 调用scanner对象的nextInt()方法
int age = scanner.nextInt();
System.out.println("age="+age);
// 3.读取字符串
System.out.print("请输入一个字符串:");
// next()方法会因为空格而终止读取
String strValue = scanner.next();
System.out.println("strValue="+strValue);
// 推荐使用:
// nextLine()方法不会因为空格而终止读取
strValue = scanner.nextLine();
System.out.println("strValue="+strValue);
}
}
2、分支结构
[1]if语句
public class Demo02 {
public static void main(String[] args){
// 创建Scanner对象
Scanner scanner = new Scanner(System.in);
System.out.print("请输入i:");
int i = scanner.nextInt();
System.out.print("请输入j:");
int j = scanner.nextInt();
// 测试使用单独的if语句
// 当if(判断条件)为true时执行{}中的语句
if (i > j){
System.out.println("i 比 j 大");
}
// 不建议这么做
// 如果if语句块中只有一条语句,可以省略{}
if (i < j){
System.out.println("i 比 j 小");
}
// 读取一个布尔值
System.out.print("请输入flag:");
boolean flag = scanner.nextBoolean();
// 没有必要写flag == true
if (flag) {
System.out.println("flag是真");
}
}
}
[2]if…else
public class Demo03 {
public static void main(String[] args){
// 创建Scanner对象
Scanner scanner = new Scanner(System.in);
System.out.print("请输入i:");
int i = scanner.nextInt();
System.out.print("请输入j:");
int j = scanner.nextInt();
if (i > j){
System.out.println("i 比 j 大");
} else {
System.out.println("i 小于 或 等于 j");
}
}
}
[3]if…else if…else语句
public class Demo04 {
public static void main(String[] args){
// 创建Scanner对象
Scanner scanner = new Scanner(System.in);
System.out.print("请输入i:");
int i = scanner.nextInt();
System.out.print("请输入j:");
int j = scanner.nextInt();
if (i > j){ // 执行条件判断①
System.out.println("i 比 j 大"); // ①为true时执行
} else if (i < j) { // ①为false继续执行下一个条件判断②
System.out.println("i 比 j 小"); // ②为true时执行
} else {
System.out.println("i 和 j 相等"); // ②为false时执行
}
}
}
[4]if…else嵌套
public class Demo05 {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
int j = scanner.nextInt();
int m = scanner.nextInt();
int n = scanner.nextInt();
if (i > j){ // 执行条件判断①
System.out.println("i 比 j 大"); // ①为true时执行
} else if (i < j) { // ①为false继续执行下一个条件判断②
System.out.println("i 比 j 小"); // ②为true时执行
} else {
System.out.println("i 和 j 相等"); // ②为false时执行
// 嵌套在其他if...else结构内的if
if (m > n){
System.out.println("m 比 n 大");
}
}
}
}
[5]switch…case语句
字面意思:『切换』不同的『情况』。切换需要有依据,这就是我们在switch后面的括号要指定的数据
。
switch(表达式)中表达式的可选值类型
- byte
- short
- int
- char
- 枚举(JDK1.5)
- String(JDK1.7)
case子句
- case子句中指定的值必须是`常量`,不能是变量或不确定的表达式的值
- 同一个switch语句中所有case子句中的`常量值必须互不相同`
default子句
- default子句是可选的
- default子句的位置是灵活的
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args){
// 创建Scanner对象
Scanner scanner = new Scanner(System.in);
System.out.print("请输入季节:");
String season = scanner.nextLine();
// 使用season变量的值和后面的case依次进行比较
// 遇到一个满足条件的case,那么后面的都会被执行,包括default分支
// 除非在某个case中使用了break关键字,停止了case的执行。
switch(season){
case "spring":
System.out.println("春天");
// break ;
case "summer":
System.out.println("夏天");
// break ;
case "autumn":
System.out.println("秋天");
// break ;
case "winter":
System.out.println("冬天");
// break ;
// 当前面每一个case都不匹配时执行default分支(默认分支)
default:
System.out.println("梅雨季节");
}
}
}
3、循环结构
流程图
如下
for循环结构
语法规则
:
- 循环结构中判断条件部分必须是
布尔类型
,当判断条件部分的表达式计算结果为false时,循环结束。 - 初始化部分可以
声明多个变量
,但必须是同一个类型
,用逗号分隔 - 可以有
多个变量更新
,用逗号分隔
流程图
如下
for循环使用示例
for ( int i = 1 ; i <= 5; i++ ){
//打印1-5
System.out.println(i);
}
// 1~100偶数求和
sum = 0;
for ( int i = 1 ; i <= 100 ; i++ ) {
// 判断当前的i是否是偶数
// 偶数的判断标准:对2取模,结果为0
if (i % 2 == 0){
sum += i;
}
}
while循环结构
while循环使用示例
// 1~100偶数求和
int i = 0;
int sum = 0;
while (i <= 100){
// 判断当前的i是否是偶数
// 偶数的判断标准:对2取模,结果为0
if (i % 2 == 0){
sum += i;
}
i++;
}
do…while循环结构
do…while循环使用示例
int i = 0;
int sum = 0;
do {
if (i % 2 == 0){
sum += i;
}
i++;
}while(i <= 100);
5.1 循环语句的区别
三种循环的区别总结
1.建议使用的顺序:for,while,do-while
2.循环次数确定建议使用for,循环次数不确定建议使用while
循环次数不确定需要先写成死循环的格式
3.do-while循环来讲的话,至少执行一次
4.while和do-while循环而言,循环结束后,初始化条件中定义的变量可以继续使用,
但是for循环的不能使用(在for循环内部定义初始化语句)
public class Demo02 {
public static void main(String[] args) {
//for循环: 先判断条件,后执行循环体
//for循环第一次布尔表达式都不成立(false): 循环体一次都不执行
//第一次: i>5 --> 4>5 --> false 不执行循环体,直接执行for循环后面的输出语句
for (int i = 4; i > 5; i++) {
System.out.println("...for...");
}
System.out.println("...end...");
//while循环: 先判断条件,后执行循环体
//while循环第一次布尔表达式都不成立(false): 循环体一次都不执行
//第一次: j>5 --> 4>5 --> false 不执行循环体,直接执行while循环后面的输出语句
int j = 4;
while (j > 5) {
System.out.println("...while...");
j++;
}
System.out.println("...end...");
//do-while循环: 先执行循环体,再判断条件
//do-while循环第一次布尔表达式都不成立(false): 循环体会至少执行一次(先执行,后判断条件)
//第一次: 定义int变量k的值3,接着执行{}中的循环体,k的值变成4
//再执行判断条件k>5 --> 4>5 --> false 结束do-while循环执行do-while后面的输出语句
int k = 4;
do{
System.out.println("...do-while...");
k++;//4
} while(k>5);//k>5 --> 4>5 --> false 结束do-while循环执行do-while后面的输出语句
System.out.println("do-while...end...");
}
}
5.2 死循环
/*
死循环
1.概念: 永不休止的循环
2.分类:
(1)for循环的死循环格式
for(;;){...}
(2)while循环的死循环格式 建议使用
while(true){...}
(3)do-while循环的死循环格式
do{
...
}while(true);
*/
public class DeadLoop {
public static void main(String[] args) {
//for循环
/*for (;true;) {
System.out.println("Hello");
}*/
//for循环的死循环格式
//不写布尔表达式: 默认就是true
/*for (;;) {
System.out.println("Hello");
}*/
//while循环的死循环格式
/*int i = 0;
while(i<3) {
System.out.println("Hello");
}*/
/*while (true) {
System.out.println("Hello");
}*/
//do-while循环的死循环格式
/*int i = 0;
do {
System.out.println("Hello");
}while(i<3);*/
do {
System.out.println("Hello");
}while(true);
}
}