案例01:买飞机票
- 机票价格按照淡季旺季,头等舱和经济舱收费,输入机票原价,月份和头等舱或者经济舱。
- 机票最终优惠价格的计算方案如下:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//1.输入机票要选择的原价,月份,舱位类型
Scanner sc = new Scanner(System.in);
System.out.print("请您输入机票的原价:");
double money = sc.nextInt();
System.out.print("请您输入机票的月份(1-12):");
int month = sc.nextInt();
System.out.print("请您输入要选择的舱位类型:");
String type = sc.next();
System.out.println("您优惠后的价格为:" + calc(money, month, type));
}
//2.定义新方法计算机票最终优惠价格
public static double calc(double money,int month,String type){
if (month >= 5 && month <= 10){
//旺季
switch (type){
case "头等舱":
money *= 0.9;
break;
case "经济舱":
money *= 0.85;
break;
default:
System.out.println("您输入的舱位类型有误。");
money = -1;
}
}else if (month == 11 || month == 12 || month >= 1 && month <= 4){
//淡季
switch (type){
case "头等舱":
money *= 0.7;
break;
case "经济舱":
money *= 0.65;
break;
default:
System.out.println("您输入的舱位类型有误。");
money = -1;
}
}else {
System.out.println("sorry,您输入月份有误……");
money = -1;
}
return money;
}
}
案例02:找素数
- 素数:如果除了1和它本身以外,不能被其他正整数整除,就叫素数。
- 判断101-200之间有多少个素数,并输出所有素数。
//判断规则:从2开始遍历到该数的一半的数据,看是否有数据可以整除,有就不是素数,没有就是素数
//其实从2到开平方的那个数就可以判断是不是素数了,这里使用的是2到一半的方法判断是不是素数
public class Demo02 {
public static void main(String[] args) {
for (int i = 101; i < 200; i++) {
boolean flag = true;//信号位:标记,一开始认为当前数据是素数
//这里使用j<i/2,而不是<=,因为如果i/2可以被整除证明这个数是素数了就不需要用等号了
for (int j = 2; j < i/2 ; j++) {
//不是素数
if (i % j == 0){
flag = false;
break;
}
}
//判断是素数,再进行输出
if (flag){
System.out.println("以下是101-200之间的素数:");
System.out.print(i + "\t");
}
}
}
}
案例03:验证码
- 定义方法实现随机产生一个5位的验证码,每位可能是数字,大写字母,小写字母。
import java.util.Random;
public class Demo03 {
public static void main(String[] args) {
System.out.println("随机生成的5位验证码为:" + createCode(5));
}
public static String createCode(int n){
//3.定义一个字符串记录随机生成的字符
String code = "";
Random r = new Random();
//1.for循环用于循环n次,依次生成随机字符
for (int i = 0; i < n; i++) {
//2.随机生成带有数字,英文大写,英文小写的字符串;
//这里使用Random()方法生成随机字符串,0,1,2分别代表英文大写,英文小写,数字,从而实现随机生成验证码
int type = r.nextInt(3);
switch (type){
case 0://英文大写(A:65~Z:(65+25))-->(bound:26)+65
char ch = (char) (r.nextInt(26)+65);
code += ch;
break;
case 1://小写字符(a:97~z:(97+25))-->(bound:26)+97
char ch1 = (char)(r.nextInt(26)+97);
code += ch1;
break;
case 2://数字(0-9)-->(bound:10)
code += r.nextInt(10);
break;
}
}
return code;
}
}