Day06_编程思维训练
今日的任务:
- 复习前半段课程学习的java编程知识,使用所学的知识解决问题,提高编程能力
1、买飞机票
//需求
//机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
//按照如下规则旺季(5-10月)头等舱9折,经济舱8.5折,
// 淡季(11月到来年4月)头等舱7折,经济舱6.5折。
public static double calculateValue(int month,String type,int value){
boolean flag = false;
switch (month){
case 1:
case 2:
case 3:
case 4:
case 11:
case 12:
break;
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
flag = true;
break;
default:
System.out.println("月份出错");
return -1;
}
if (!flag){
if (type.equals("头等舱")){
return value*0.7;
}else{
return value*0.65;
}
}else{
if (type.equals("头等舱")){
return value*0.9;
}else{
return value*0.85;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入原价、月份和机舱类");
String ss = sc.next();
String[] s = ss.split(",");
double rs = calculateValue(Integer.parseInt(s[1]),s[2],Integer.parseInt(s[0]));
System.out.println("结果为"+rs);
}
2、找素数
//找素数
//如果除了1和它本身之外,不能被其他正数整除的就叫素数
public static void main(String[] args) {
boolean flag = true;
for (int i = 101; i < 200; i++) {
flag = true;
for (int j = 2; j <= i/2; j++) {
if (i%j==0){
flag = false;
break;
}
}
if (flag){
System.out.print(i+" ");
}
}
}
3、开发验证码
//定义方法实现随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母
public static String getValue(){
String randomS = "1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
String[] s = randomS.split("");
Random rm = new Random();
String[] rs = new String[5];
for (int i = 0; i < 5; i++) {
rs[i] = s[rm.nextInt(62)];
}
String srs =String.join("",rs);
return srs;
}
public static void main(String[] args) {
String code = getValue();
System.out.println(code);
}
//课程代码实现方式
public static void main(String[] args) {
Random random = new Random();
List list = new ArrayList();
for (int i = 0; i < 5; i++) {
int type = random.nextInt(3);
switch (type) {
case 0:
list.add(random.nextInt(10));
break;
case 1:
list.add((char) (random.nextInt(26) + 65));
break;
case 2:
list.add((char) (random.nextInt(27) + 97));
break;
default:
break;
}
}
System.out.println(list);
}
4、数组元素的赋值
//数组元素的赋值
public static void main(String[] args) {
int[] a ={1,2,3,4,5};
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = a[i];
}
System.out.printf("a的内容:");
for (int i = 0; i < a.length; i++) {
System.out.printf(" "+a[i]);
}
System.out.println();
System.out.printf("b的内容:");
for (int i = 0; i < b.length; i++) {
System.out.printf(" "+b[i]);
}
}
5、评委打分
//评委打分
//在歌唱比赛中,有6名评委给选手打分,范围是0-100,选手最后的得分为去掉最高分最低分之后的平均值
public static void main(String[] args) {
int scores[] = {55,56,77,67,99};
int max=scores[0],min=scores[0],sum=0;
for (int i = 0; i < 4; i++) {
sum += scores[i];
if (max<scores[i]){
max = scores[i];
}
if (min>scores[i]){
min = scores[i];
}
}
double scoreRs = (sum-max-min)*1.0/4 ;
System.out.println(scoreRs);
}
6、数字加密
//某系统的数字密码,比如1983,采用加密方式进行传输,规则如下:先得到每位数
//然后每位数都加上5,再对10求余,最后将所有数字翻转
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入密码:");
String []passwords = scanner.next().split("");
String code = "";
for (int i = 0; i < passwords.length; i++) {
code = (Integer.parseInt(passwords[i]) + 5) %10 + code;
}
System.out.println(code);
}
7、抢红包
//一个大V直播抽奖,奖金是现金红包,分别有
//{2,588,888,1000,10000}五个奖金
//使用代码模拟抽奖,打印每一个奖项,奖项的出现要随机且不重复
public static void main(String[] args) {
Random random = new Random();
int[] numbers = {2,588,888,1000,10000};
int[] visited = {0,0,0,0,0};
int rVisit,count=0;
while(count<5) {
rVisit = random.nextInt(5);
if (visited[rVisit] == 0) {
System.out.println(numbers[rVisit] + "元的奖金被抽出");
visited[rVisit] = 1;
count++;
}
}
}
8、模拟双色球业务
//投注号码由六个红色球号码和一个蓝色球号码组成
//红色球号码从1-33中选择;蓝色球号码从1-16中选择
//需要实现功能
//定义一个方法可以录入用户输入的6个红球和1个篮球号码
//定义一个方法随机产生六个红球和六个蓝球号码
public static void main(String[] args) {
int[] luckNumbers = createLuckNumbers();
for (int i = 0; i < luckNumbers.length; i++) {
System.out.printf(luckNumbers[i] + " ");
}
System.out.println();
int[] userNumbers = userInputNumbers();
judge(luckNumbers, userNumbers);
// System.out.println();
// for (int i = 0; i < luckNumbers.length; i++) {
// System.out.printf(userNumbers[i]+" ");
// }
}
//判断中奖金额
private static void judge(int[] luckNumbers, int[] userNumbers) {
//蓝球具有一定的特殊性,所以需要单独判断
boolean flag = luckNumbers[6] == userNumbers[6];
int trueNumber = 0;
//通过循环判断红球总共对了几个号
for (int i = 0; i < luckNumbers.length - 1; i++) {
for (int j = 0; j < userNumbers.length - 1; j++) {
if (luckNumbers[i] == userNumbers[i]) {
trueNumber += 1;
// System.out.print(luckNumbers[i]+" ");
break;
}
}
}
System.out.println();
//把蓝球对的数量加上,计算总共对了几个号
if (flag) trueNumber++;
// System.out.println(trueNumber);
//通过区分不同的情况,判断中奖金额
switch (trueNumber) {
case 7:
System.out.println("恭喜你中了1000万");
break;
case 6:
if (flag) {
System.out.println("恭喜你中了500万");
} else {
System.out.println("恭喜你中了3000万");
}
break;
case 5:
System.out.println("恭喜你中了200元");
break;
case 4:
System.out.println("恭喜你中了10元");
break;
case 3:
case 2:
case 1:
if (flag) {
System.out.println("恭喜你中了5元");
}
}
}
//用户输入一组双色球返回
private static int[] userInputNumbers() {
Scanner scanner = new Scanner(System.in);
String[] numberArray = scanner.next().split(";");
int[] rs = new int[numberArray.length];
for (int i = 0; i < numberArray.length; i++) {
rs[i] = Integer.parseInt(numberArray[i]);
}
return rs;
}
//随机一组中奖号码返回
private static int[] createLuckNumbers() {
Random random = new Random();
int[] rs = new int[7];
rs[6] = random.nextInt(16) + 1;
int temp, i = 0;
boolean flag = false;
while (i < 6) {
flag = false;
temp = random.nextInt(33) + 1;
for (int j = 0; j < i; j++) {
if (rs[j] == temp) {
flag = true;
}
}
if (flag) {
continue;
}
rs[i] = temp;
i++;
}
// return new int[]{28, 14, 2, 8, 22, 18, 4};
return rs;
}