# 练习一:飞机票
需求:
机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)
头等舱7折,经济舱6.5折。
import java.util.Scanner;
public class day {
public static void main(String[] ages) {
Scanner sc = new Scanner(System.in);
System.out.println("头等舱请输入1,经济舱请输入2");
int seat = sc.nextInt();
if (seat >= 0 && seat <= 2) {
System.out.println("请输入现在是几月份");
int month = sc.nextInt();
if (month > 0 && month <= 12) {
System.out.println("请输入机票原价");
int money = sc.nextInt();
if (money > 0) {
if (month <= 10 && month >= 5) {
switch (seat) {
case 1 -> System.out.println("您是头等舱客户,票价是:" + (money * 0.9));
default -> System.out.println("您是经济舱客户,票价是:" + (month * 0.85));
}
} else if (month <= 4 || (month >= 11 && month <= 12)) {
switch (seat) {
case 1 -> System.out.println("您是头等舱客户,票价是:" + money * 0.7);
default -> System.out.println("您是经济舱客户,票价是:" + money * 0.65);
}
}
} else System.out.println("原价输入错误。。");
} else System.out.println("月份输入错误。。");
} else System.out.println("输入错误。。");
}
}
二:打印素数
判断101~200之间有多少个素数,并输出所有素数。
备注:素数就是质数
public class day {
public static void main(String[] ages) {
//循环控制每个数字去取余,用方法传来的布尔值进行判读输出
for (int j = 101; j <= 200; j++) {
if(sum(j)==true){
System.out.print(j+" ");
}
}
}
public static boolean sum (int j){
for (int i = 2; i <= 100; i++) {
if (j % i == 0) {
return false;//如果不是素数就返回false
}
} return true;//如果是素数就返回true
}
}
# 练习三:验证码
需求:
定义方法实现随机产生一个5位的验证码
验证码格式:
长度为5
前四位是大写字母或者小写字母
最后一位是数字
import java.util.Random;
public class day {
public static void main(String[] ages) {
String ch = "";//定义一个字符串用来接收验证码
System.out.print("随机数是:"+stochastic(ch));//输出方法里的验证码
}
public static String stochastic(String ch) {
Random r = new Random();
//for控制循环5次生成5个验证码
for (int i = 1; i <= 4; i++) {
//随机生成三个数字用来随机是大写还是小写还是数字
int x = r.nextInt(2);
//sitch循环来判断并生成
switch (x) {
case 0://判断是否生成大写,A是65;
char y1 = (char) (r.nextInt(26) + 65);
ch += y1;
break;
case 1://判断是否生成小写,a是97;
char y2 = (char) (r.nextInt(26) + 97);
ch += y2;
break;
/*default://判断是否生成数字
int y3 = r.nextInt(9) + 1;
ch += y3;
break;*/
}
}
int y3 = r.nextInt(9) + 1;
ch += y3;
return ch;//返回ch的数值
}
}
# 练习四:复制数组
需求:
把一个数组中的元素复制到另一个新数组中去。
public class day {
public static void main(String[] ages){
int []arr=new int[]{1,5,6,9,7,5};
int []brr=new int[arr.length];
for (int i = 0; i < arr.length; i++) {
brr[i]=arr[i];
System.out.print(brr[i]+" ");
}
}
}
# 练习五:评委打分
需求 :
在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。
import java.util.Random;
public class day {
public static void main(String[] ages) {
meanValue();
}
public static void meanValue() {
int[] arr = new int[6];
int[] brr = new int[arr.length - 2];
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
int jury = r.nextInt(101);
arr[i] = jury;
}
int num = 0;
//将最大值放到数组的最左边
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
num = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = num;
}
}
//将最小值放到数组的最左边
for (int i = 5; i > 0; i--) {
if (arr[i] < arr[i - 1]) {
num = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = num;
}
}
//将去掉最大值最小值的数据放到数组brr里面
for (int i = 1, j = 0; i < arr.length - 1; i++, j++) {
brr[j] = arr[i];
}
int sum = 0;
//获取平均数
for (int i = 0; i < brr.length; i++) {
sum += brr[i];
}
System.out.println(sum / brr.length);
}
}
# 练习六:数字加密
需求:
某系统的数字密码(大于0),比如1983,采用加密方式进行传输。
规则如下:
先得到每位数,然后每位数都加上5 , 再对10求余,最后将所有数字反转,得到一串新数。
public class day {
public static void main(String[] args) {
//调用Scanner包获取键盘录入
//将录入数组除10获取循环次数即密码位数作为数组长度
//将密码取余放入数组,实现将数字反转的加密
//将数组的每位数字进行加5并且取余运算,完成加密算法
//循环遍历数组,输出加密后的数字
extracted();//输出方法结果
}
//定义方法用来加密运算
public static void extracted() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入密码");
int ch = sc.nextInt();
//获取密码长度作为数组长度
int j = 0;
for (int i = ch; i != 0; j++) {
i = i / 10;
}
//获取密码个位数并从右到左存储在数组中
int ge;
int[] arr = new int[j];
for (int i = ch, n = 0; i != 0; n++) {
ge = i % 10;
arr[n] = ge;
i = i / 10;
}
//将数字加密
for (int i = 0; i < arr.length; i++) {
arr[i] = (arr[i] + 5) % 10;
}
System.out.print("加密密码为:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
}
}
# 练习七:数字解密
把上一题加密之后的数据进行解密
import java.util.Scanner;
public class day {
public static void main(String[] ages) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入加密后的密码");
int ch = sc.nextInt();
int ge = 0;
int j = 0;
//获取密码长度作为数组长度
for (int i = ch; i != 0; j++) {
i = i / 10;
}
int[] arr = new int[j];
//将加密后的密码倒转,获得正确的排序
for (int i = ch, n = 0; i != 0; n++) {
ge = i % 10;
arr[n] = ge;
i = i / 10;
}
//将密码解密
for (int i = 0; i < arr.length; i++) {
arr[i] = ((arr[i] + 5) % 10);
}
System.out.print("解密后密码为:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
}
}
# 练习八:抽奖
需求:
一个大V直播抽奖,奖品是现金红包,分别有{2, 588 , 888, 1000, 10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)
```java
888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出
```
import java.util.Random;
public class day {
public static void main(String[] ages){
//方法1:
//静态初始化数组arr,然后定义brr,让brr长度和arr相同
//用while循环使brr数组存入全部的数据
//定义方法,将方法放进while循环内,以便随机的每个数字的都可以和brr数组比较
// 随机数字作为数组arr下标和brr判断,如果有相同的证明已经被抽了,
// 用return结束方法,返回布尔值false,
// 遍历完没有重复结束方法,返回true
//判断方法1返回的数据,如果为false则重新重新抽取
//判断方法1返回的数据,如果为true则依次存储进入brr数组中
//遍历输出brr
/*Random r=new Random();
int[]arr=new int[]{2, 588 , 888, 1000, 10000};
int[]brr=new int[arr.length];
int sum=0;
//循环使奖品序列brr把奖全部存储
while (sum<=arr.length-1) {
int x=r.nextInt(arr.length);
if(repetition(arr,brr,x)){
brr[sum]=arr[x];
sum++;
}
}
for (int i = 0; i < brr.length; i++) {
System.out.println(brr[i]+"元的奖金被抽出");
}
}
//创建一个方法,判断是否奖项已经被抽走
public static boolean repetition(int []arr,int[]brr,int x){
for (int i = 0; i < arr.length; i++) {
if(arr[x]==brr[i]){//如果brr有相同的数据,那么结束方法,返回false
return false;
}
}
return true;//将arr[x]与brr数组里所有的数字进行了对比,没有重复的,返回true*/
//方法2:
//随机数作为数组的索引进行随机交换
//打乱5次输出数组即可
Random r=new Random();
int[]arr=new int[]{2, 588 , 888, 1000, 10000};
for (int i = 0; i < arr.length; i++) {
int ram=r.nextInt(arr.length);
int x=arr[ram];
arr[ram]=arr[i];
arr[i]=x;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]+"元的奖金被抽出");
}
}
}