Java案例(更新中)
一、买飞机票
public class Demo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入原价");
double Price = sc.nextDouble();
System.out.println("请输入月份");
int month = sc.nextInt();
System.out.println("请输入仓位类型");
String TicketType = sc.next();
System.out.println("折后票价为:" + TicketPrice(Price, month, TicketType));
}
public static double TicketPrice(double Price, int month, String TicketType) {
if (month <= 10 && month >= 5) {
switch (TicketType) {
case "头等舱":
Price *= 0.9;
break;
case "经济舱":
Price *= 0.85;
break;
}
}
switch (TicketType) {
case "头等舱":
Price *= 0.7;
break;
case "经济舱":
Price *= 0.65;
break;
}
return Price;
}
}
二、生成验证码
public class Demo {
public static void main(String[] args) {
System.out.println(Code(5));
}
public static String Code(int n){
String code = "";
Random r = new Random();
for (int i = 0; i < n; i++) {
//生成0 1 2 ,0代表生成数字 1 代表大写字母 2小写字母
int Case = r.nextInt(3);
switch (Case){
case 0:
//生成数字0-9
code += r.nextInt(10); //code = code + 0-9
break;
case 1:
//生成A-Z大写字母 对应ASCII码: 65 - 65+25
char ch1 = (char) (r.nextInt(26)+65); //0-25 + 65
code += ch1;
break;
case 2:
//97-97+25
char ch2 = (char) (r.nextInt(26)+97); //0-25 + 65
code += ch2;
break;
}
}
return code;
}
}
三、评委打分
public class Demo {
public static void main(String[] args) {
//输入n位评委,去掉最高分、最低分,得到选手平均分
System.out.println("选手最终得分为:"+GetAverageScore(5));
}
public static double GetAverageScore(int n){
double[] score = new double[n];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < score.length; i++) {
System.out.println("请输入第"+(i+1)+"位评委的打分");
score[i]=sc.nextDouble();
}
double max = score[0];
double min = score[0];
double sum = 0;
for (int i = 0; i < score.length; i++) {
if(score[i]>max){
max = score[i];
}
if(score[i]<min){
min = score[i];
}
sum += score[i];
}
sum = (sum - max - min)/(n-2);
return sum;
}
}
四、数字加密
public class Encryption {
public static void main(String[] args) {
//四位数密码-先+5 再%10,再反转顺序
System.out.println(encryptionbm(1983));
}
public static String encryptionbm(int passport){
//passport = 1983
//1\把这个密码拆分成一个一个的数字,才可以对其进行加密
int[] numbers = split(passport);
//numbers= [1,9,8,3]
//2\遍历每个数字,对其进行加密
for (int i = 0; i < numbers.length; i++) {
numbers[i] = (numbers[i]+5)%10;
}
//3\倒着遍历,并连接/反转数组,正向遍历并连接
//对数组反转,把对数组的反转交给独立的方法
Reverse(numbers);
//拼接
String data = "";
for (int i = 0; i < numbers.length; i++) {
data += numbers[i];
}
return data;
}
public static int[] Reverse(int[] numbers) {
// [1,2,3,4]
// i j
int temp = 0;
for (int i = 0,j = numbers.length-1; i < j; i++,j--) {
temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
return numbers;
}
public static int[] split(int passport) {
int[] numbers = new int[4];
numbers[0] = passport/1000;
numbers[1] = (passport/100)%10;
numbers[2] = (passport/10)%10;
numbers[3] = (passport)%10;
return numbers;
}
}
五、抢红包
一个大V直播时发起了抢红包活动,分别由9、666、188、520、99999五个红包。请模拟粉丝来抽奖,按照先来先得,随机抽取,抽完为止,注意:一个红包只能被抽一次,先抽或者后抽哪一个红包是随机的。
1、第一种方案
写个for循环控制抽奖5次,每次抽奖,都从数组中随机找出一个金额,如果该金额不是0,则代表抽中,接着用0替换该位置处的金额,然后继续下一个粉丝的抽奖;如果抽中的金额发现是0,代表该位置处的红包之前被别人抽走了,则从新从数组中随机找出一个金额,继续判断!直至抽中的金额不是0!
public class lottery {
public static void main(String[] args) {
/* 一个大V直播时发起了抢红包活动,分别由9、666、188、520、99999五个红包。
请模拟粉丝来抽奖,按照先来先得,随机抽取,抽完为止
注意:一个红包只能被抽一次,先抽或者后抽哪一个红包是随机的。*/
int[] moneys = {9,666,188,520,99999};
number(moneys);
}
public static void number(int[] moneys) {
//定义一个for循环,控制抽奖5次
Scanner sc = new Scanner(System.in);
Random r = new Random();
for (int i = 0; i < moneys.length; i++) {
System.out.println("请您输入任意内容进行抽奖操作");
sc.next();//等待用户输入内容
while (true) {
//为当前用户抢一个红包出来
int n = r.nextInt(moneys.length);
if (moneys[n] != 0) {
System.out.println("您抽中了:"+moneys[n]);
moneys[n] = 0;
break; //结束这次抽奖
}
//死循环,不抽中一直循环
}
}
System.out.println("活动结束。。。");
}
}
2、第二种方案
先把数组里面的5个金额打乱顺序就认为是中奖顺序;接着,写个for循环,执行5次,每次都提示抽奖;每次抽奖,都依次取出数组中的每个位置处的金额作为中奖金额即为打乱后的顺序