文章目录
、
一、顺序结构
除非特别说明,否则按顺序从上至下一句一句执行
二、选择结构
1、单选择结构
满足条件就执行,不满足就跳到下一步
(1)语法格式
if (条件) {
语句组
}
(2)案例演示
判断一个数是否是偶数
package net.xsp.lesson02;
import java.util.Scanner;
/**
* 功能:判断一个数是不是偶数
* 作者:xsping
* 日期:2019年3月21日
*/
public class JudgeEvenNumber {
public static void main(String[] args) {
// 声明部分
int n;
Scanner sc = new Scanner(System.in);
// 输入部分
System.out.print("n = ");
n = sc.nextInt();
// 处理部分 + 输出部分
if (n % 2 == 0) {
System.out.println(n + " is an even number.");
}
}
}
运行结果
没有输出语句
2、双选择结构
if-else
非这即那- 不是执行
if
就是执行else
(1)语法格式
if (条件) {
语句组1
} else {
语句组2
}
(2)案例演示
计算三角形面积
package net.xsp.lesson02;
import java.util.Scanner;
/**
* 功能:计算三角形面积
* 要判断能否构成三角形
* 作者:xsping
* 日期:2019年3月21日
*/
public class CalculateTriangArea {
public static void main(String[] args) {
// 声明部分
double a, b, c, p, s;
Scanner sc = new Scanner(System.in);
// 输入部分
System.out.print("a = ");
a = sc.nextDouble();
System.out.print("b = ");
b = sc.nextDouble();
System.out.print("c = ");
c = sc.nextDouble();
// 处理部分 + 输出部分
if (a + b > c && b + c > a && c + a > b) {
p = (a + b + c) / 2;
s = Math.sqrt(p * (p - a) * (p - b) * (p - c));
System.out.println("三角形面积:" + s);
} else {
System.out.println(a + "、" + b + "、" + c + "构不成三角形!");
}
}
}
运行结果
判断闰年平年
package net.xsp.lesson02;
import java.util.Scanner;
/**
* 功能:判断闰年
* 作者:xsping
* 日期:2019年3月21日
*/
public class JudgeLeapYear {
public static void main(String[] args) {
// 声明部分
int year;
Scanner sc = new Scanner(System.in);
// 输入部分
System.out.print("year = ");
year = sc.nextInt();
// 处理部分 + 输出部分
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
System.out.println(year + "是闰年。");
}else {
System.out.println(year + "是平年。");
}
}
}
运行结果
3、多选择结构
(1)并列式多选择结构
if (条件1) {
语句组1
}
if (条件2) {
语句组2
}
……
if (条件n) {
语句组n
}
案例演示
package net.xsp.lesson02;
import java.util.Scanner;
/**
* 功能:并列式评定成绩等级
* 作者:xsping
* 日期:2019年3月21日
*/
public class JudgeScoreLevelParallel {
public static void main(String[] args) {
// 声明部分
double score;
String level;
Scanner sc = new Scanner(System.in);
// 输入部分
System.out.print("score = ");
score = sc.nextDouble();
// 处理部分
level = "";
if (score > 100) {
level = "超出范围";
}
if (score >= 90 && score <= 100) {
level = "优秀";
}
if (score >= 80 && score <= 90) {
level = "良好";
}
if (score >= 70 && score <= 80) {
level = "中等";
}
if (score >= 60 && score <= 70) {
level = "及格";
}
if (score >= 0 && score < 60) {
level = "不及格";
}
if (score < 0) {
level = "超出范围";
}
// 输出部分
System.out.println("level = " + level);
}
}
运行结果
(2)嵌套式多选择结构
if (条件) {
if (条件1) {
语句组1
} else {
……
}
} else {
if (条件2) {
语句组2
} else {
……
}
}
案例演示
package net.xsp.lesson02;
import java.util.Scanner;
/**
* 功能:嵌套式评定成绩等级
* 作者:xsping
* 日期:2019年3月21日
*/
public class JudgeScoreLevelNesting {
public static void main(String[] args) {
// 声明部分
double score;
String level;
Scanner sc = new Scanner(System.in);
// 输入部分
System.out.print("score = ");
score = sc.nextDouble();
// 处理部分
level = "";
if (score > 100) {
level = "超出范围";
} else {
if (score >= 90){
level = "优秀";
} else {
if (score >= 80) {
level = "良好";
} else {
if (score >= 70) {
level = "中等";
} else {
if (score >= 60) {
level = "及格";
} else {
if (score >= 0) {
level = "不及格";
} else {
level = "超出范围";
}
}
}
}
}
}
// 输出部分
System.out.println("level = " + level);
}
}
运行结果
(3)延拓式多选择结构
if (条件1) {
语句组1
} else if (条件2) {
语句组2
}
……
} else if (条件n) {
语句组n
} else {
语句组n+1
}
案例演示
package net.xsp.lesson02;
import java.util.Scanner;
/**
* 功能:延拓式评定成绩等级
* 作者:xsping
* 日期:2019年3月21日
*/
public class JudgeScoreExtending {
public static void main(String[] args) {
// 声明部分
double score;
String level;
Scanner sc = new Scanner(System.in);
// 输入部分
System.out.print("score = ");
score = sc.nextDouble();
// 处理部分
level = "";
if (score > 100) {
level = "超出范围";
} else if (score >= 90){
level = "优秀";
} else if (score >= 80) {
level = "良好";
} else if (score >= 70) {
level = "中等";
} else if (score >= 60) {
level = "及格";
} else if (score >= 0) {
level = "不及格";
} else {
level = "超出范围";
}
// 输出部分
System.out.println("level = " + level);
}
}
运行结果
(4)开关式多选择结构
switch (测试表达式) {
case 值1:
语句组1
break;
case 值2:
语句组2
break;
……
case 值n:
语句组n
break;
default:
语句组n+1
}
案例演示
package net.xsp.lesson02;
import java.util.Scanner;
/**
* 功能:开关式评定成绩等级
* 作者:xsping
* 日期:2019年3月21日
*/
public class JudgeScoreSwitch {
public static void main(String[] args) {
// 声明部分
double score;
String level;
Scanner sc = new Scanner(System.in);
// 输入部分
System.out.print("score = ");
score = sc.nextDouble();
// 处理部分
level = "";
if (score > 100 || score < 0) {
level = "超出范围";
} else {
switch ((int) score / 10) {
case 10:
case 9:
level = "优秀";
break;
case 8:
level = "良好";
break;
case 7:
level = "中等";
break;
case 6:
level = "及格";
break;
default:
level = "不及格";
}
}
// 输出部分
System.out.println("level = " + level);
}
}
运行结果
三、循环结构
1、for 循环
for(条件){
语句
}
2、while循环
先判断后执行
while(条件){
语句
}
3、do…while循环
先执行后判断
do{执行语句} while(条件)
4、案例演示
package net.xsp.lesson03;
/**
* 功能:重复100次口号
* 作者:xsping
* 日期:2019年4月4日
*/
public class RepeatSlogan {
public static void main(String[] args) {
int i = 1; // 初始条件
while (i <= 100) {
System.out.println("第" + i + "次高喊口号:好好学习,天天向上!");
i++;
}
}
}
运行结果
四、打印水仙花数
package net.xsp.lesson03;
/**
* 功能:打印水仙花数
* 作者:xsping
* 日期:2019年4月4日
*/
public class DaffodilNumbers {
public static void main(String[] args) {
int p3,p2,p1;
int n = 100; // 初始条件
while (n <= 999) { // 循环条件
// 分离出个位、十位和百位数
p1 = n % 10;
p2 = (n - p1) / 10 % 10;
p3 = (n - 10 * p2 - p1) / 100;
// 筛选出水仙花数
if (n == p1 * p1 * p1 + p2 * p2 * p2 + p3 * p3 * p3){
System.out.println(n + " = " + p3 + "^3 + " + p2 + "^3 + " + p1 + "^3");
}
n++; // 更新条件
}
}
}
运行结果
五、打印玫瑰花数
package net.xsp.lesson03;
/**
* 功能:打印玫瑰花数
* 作者:xsping
* 日期:2019年4月4日
*/
public class DaffodillRose {
public static void main(String[] args) {
int p4,p3,p2,p1;
int n = 1000; // 初始条件
while (n <= 9999) { // 循环条件
// 分离出个位、十位、百位和千位数
p1 = n % 10;
p2 = (n - p1) / 10 % 10;
p3 = (n - p2 * 10 - p1) / 100%10;
p4 = (n - p3 * 100 - p2 - p1) / 1000;
// 筛选出水仙花数
if (n == p1 * p1 * p1 * p1 + p2 * p2 * p2 * p2 + p3 * p3 * p3 * p3+ p4 * p4 * p4 * p4){
System.out.println(n + " = " + p4 + "^4 + " + p3 + "^4 + " + p2 + "^4 + " + p1 + "^4");
}
n++; // 更新条件
}
}
}
运行结果