1.案例1:买飞机票
需求:
用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折;11月到来年4月为淡季,头等舱7折,经济舱6.5折;请开发程序计算出用户当前机票的优惠价。
代码示例:
package com.test.基础语法编程;
/**
* @description
* @author: Admin
* @create: 2024/9/11 11:23
*/
public class P62 {
public static void main(String[] args) {
double price=calculate(1000,11,"头等舱");
System.out.println("优惠后的价格"+price);
}
public static double calculate(double price,int month,String type){
//1.判断当前月份是淡季还是旺季
if (month>=5&&month<=10){
//旺季
//2.判断仓位类型
/*
注意:有同学会问,那如果传的month是负数,或者type的值是其他的文字,不是经济舱或者头等舱呢?
其实price,month,type的值会由前端的界面做出限制(例如type类型,前端可能就给出一个下拉框供你选择),所以一定会是一个正常的值;
*/
switch (type){
case "头等舱":
price*=0.9;
break;
case "经济舱":
price*=0.85;
break;
}
}else{
//淡季
switch (type){
case "头等舱":
price*=0.7;
break;
case "经济舱":
price*=0.65;
break;
}
}
return price;
}
}
运行结果:
2.案例2:验证码
代码示例:
package com.test.基础语法编程;
import java.util.Random;
/**
* @description:生成随机验证码
* 可以生成指定位数的验证码,每位可以是数字、大小写字母
* @author: Admin
* @create: 2024/10/15 9:24
*/
public class p63 {
public static void main(String[] args) {
System.out.println(getCode(5));
}
public static String getCode(int n){
//定义一个String类型的变量用于记住产生的每位随机字符
String code="";
Random r=new Random();
//定义一个for循环用于控制产生多少位随机字符
for (int i=1;i<=n;i++) {
// i = 1 2 3 4 ...n
// 2、为每个位置生成一个随机字符:可能是数字、大小写字母。
// 思路:随机一个0 1 2之间的数字出来,0代表随机一个数字字符,1、2代表随机大写字母,小写字母。
int type = r.nextInt(3);//0-2
switch (type){
case 0:
//数字
code+=r.nextInt(10);//0-9
break;
case 1:
//随机一个大写字符 A 65 Z 65+25 (0 - 25) + 65
code+= (char) (r.nextInt(26) + 65 );
break;
case 2:
//随机一个小写字符 a 97 z 97+25 (0 - 25) + 97
code+=(char) (r.nextInt(26) + 97);
break;
}
}
return code;
}
}
运行结果(每次运行都不一样):
3.案例3: 评委打分案例
代码示例:
package com.test.基础语法编程.p64;
import java.util.Scanner;
/**
* @description:评委打分案例
* @author: Admin
* @create: 2024/10/15 10:42
*/
public class Test1 {
public static void main(String[] args) {
System.out.println(getScroce(4));
}
/**
*
* @param number:评委人数
* @return
*/
public static double getScroce(int number){
Scanner s=new Scanner(System.in);
// 1、定义一个动态初始化的数组,负责后期存入评委的打分
int[] numbers=new int[number];
// 2、遍历数组的每个位置,依次录入评委的分数
for (int i = 0; i < number; i++) {
System.out.println("请您录入第"+ (i + 1) +"个评委的分数:");
int score = s.nextInt();
numbers[i]=score;
}
// 3、从数组中计算出总分,找出最高分,最低分。
int max=numbers[0];// 求最大值的
int min=numbers[0];// 求最小值的。
int sum=0;// 求总分用的变量
for (int num : numbers) {
//最大值
if(num>max){
max=num;
}
//最小值
if(num<min){
min=num;
}
// 求和
sum+=num;
}
// 4、计算出平均分并返回
// return (sum-min-max)/(number-2);//这样会得到整数
return 1.0*(sum-min-max)/(number-2);
}
}
运行结果:
4.案例4:数字加密
代码示例:
package com.test.基础语法编程.p64;
/**
* @description:数字加密
* 需求:某系统的数字密码是一个四位数,如1983,为了安全,需要加密后再传输,加密规则是:对密码中的每位数
* 都加5,再对10求余,最后将所有数字顺序反转,得到一串加密后的新数,请设计出满足本需求的加密程序!
* @author: Admin
* @create: 2024/10/15 11:02
*/
public class Test2 {
public static void main(String[] args) {
System.out.println("加密后的结果是:" +numberLock(1983));
//该代码即是加密也是解密
System.out.println(numberLock(8346));//输出1983
}
/**
* 方法定义为String,是因为到时候把操作后的每位数字拼接在一起
* @param number
* @return
*/
public static String numberLock(int number){
//1、把这个密码拆分成一个一个的数字,才可以对其进行加密啊。
int[] nums=getAllnumber(number);
// 2、遍历这个数组中的每个数字,对其进行加密处理。
for (int i = 0; i < nums.length; i++) {
nums[i]=(nums[i]+5)%10;
}
// 3、对数组反转,把对数组进行反转的操作交给一个独立的方法来完成
int[] reverse = reverse(nums);
String finalNumber="";
for (int re : reverse) {
finalNumber+=re;
}
return finalNumber;
}
/**
* 将nums数组的数字反转
* @param nums
* @return
*/
public static int[] reverse(int[] nums){
for(int i=0,j=nums.length-1;i<j;i++,j--){
// 交换i和j位置处的值。
// 3.1、把后一个位置处的值交给一个临时变量先存起来
int temp=nums[j];
// 3.2、把前一个位置处的值赋值给后一个位置处
nums[j]=nums[i];
//3.3、把后一个位置处原来的值(由临时变量记住着)赋值给前一个位置
nums[i]=temp;
}
return nums;
}
/**
* 该方法把传入的一个4位数的整数的每一位分隔出来,放到一个int数组里
* @param number
* @return
*/
public static int[] getAllnumber(int number){
int[] num=new int[4];
num[0]=number/1000;
num[1]=number/100%10;
num[2]=number/10%10;
num[3]=number%10;
return num;
}
}
运行结果:
5.案例5:数组拷贝
代码示例:
package com.test.基础语法编程.p64;
/**
* @description:数组拷贝
* @author: Admin
* @create: 2024/10/15 15:58
*/
public class Test3 {
public static void main(String[] args) {
int[] nums={11,22,33};
int[] numNews=copy(nums);
printArray(numNews);
}
//数组打印方法
public static void printArray(int[] nums){
System.out.print("[");
for (int i = 0; i < nums.length; i++) {
System.out.print(i==nums.length-1?nums[i]:nums[i]+",");
}
System.out.println("]");
}
public static int[] copy(int[] nums){
int[] numNews=new int[nums.length];
for (int i = 0; i < nums.length; i++) {
numNews[i]=nums[i];
}
return numNews;
}
}
运行结果:
6.案例6:抢红包
代码示例:
package com.test.基础语法编程;
import java.util.Random;
import java.util.Scanner;
/**
* @description:抢红包
* @author: Admin
* @create: 2024/10/16 9:19
*/
public class p65 {
public static void main(String[] args) {
int[] reds={9,666,188,520,99999};
getRed(reds);
}
public static void getRed(int[] reds){
Random r=new Random();
Scanner s=new Scanner(System.in);
//1定义一个for循环,控制抽奖5次
for (int i = 0; i < reds.length; i++) {
//2.提示粉丝抽奖
System.out.println("请输入任意内容:");
s.next();//等待用户输入内容,按了回车才往下走
//3为当前这个粉丝找一个随机的红包出来
while (true) {
int number = r.nextInt(reds.length);
int money=reds[number];
//4判断这个红包是否不为0
if (money!=0){
System.out.println("恭喜你,抽中了红包"+money);
reds[number]=0;
break;
}
}
}
System.out.println("活动结束");
}
}
运行结果(每次运行都可能不一样):
7.案例7:找素数
代码示例一:
package com.test.基础语法编程.p66;
/**
* @description:找素数方法一
* @author: Admin
* @create: 2024/10/16 10:07
*/
public class Test1_1 {
public static void main(String[] args) {
int i = check(101, 200);
System.out.println("总计:"+i);
}
public static int check(int start,int end){
int count=0;
// 1、定义一个for循环找到101到200之间的每个数据
for (int i = start; i <=end ; i++) {
// 信号位思想
boolean flag=true;// 假设的意思:默认认为当前i记住的数据是素数。
// 2、判断当前i记住的这个数据是否是素数。
for (int j = 2; j <=i/2; j++) {
if(i%j==0){
flag=false;
break;
}
}
if (flag) {
System.out.println(i);
count++;
}
}
return count;
}
}
代码示例二:
package com.test.基础语法编程.p66;
/**
* @description:找素数方法二
* @author: Admin
* @create: 2024/10/16 10:02
*/
public class Test1 {
public static void main(String[] args) {
int count=0;
for (int i = 101; i <=200; i++) {
if(check(i)){
System.out.println(i);
count++;
}
}
System.out.println("101-200之间的素数总计"+count+"个");
}
public static boolean check(int data){
for (int i = 2; i <=data/2 ; i++) {
if(data%i==0){
return false;//不是素数
}
}
return true;//是素数
}
}
运行结果: