循环和数组小练习

练习

卖飞机票

需求

  • 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
  • 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
package com.example.demo;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
//        输入相关数据:票价,月份,座位类型
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入机票原价");
        int ticket = sc.nextInt();
        System.out.println("请输入月份");
        int mouth = sc.nextInt();
        System.out.println("请输入头等舱或经济舱");
        String seat = sc.next();
//        判断淡季还是旺季
        if (5 <= mouth && mouth <= 10){
//            调用计算票价方法
            discount(seat, ticket,0.9,0.85);
        } else if ( (1<= mouth && mouth <= 4) || (11<=mouth && mouth <=12)){
            discount(seat,ticket,0.7,0.65);
        }else{
            System.out.println("输入月份不合法");
        }
    }

//    定义计算票价方法
    private static void discount(String seat, int ticket,double d1,double d2) {
        if (seat ==  "头等舱"){
            double price = ticket * d1;
            System.out.println(price);
        }else {
            double price = ticket * d2;
            System.out.println(price);
        }
    }
}

找质数

需求:

​ 判断101-200之间有多少个素数,并输出所有素数。

package com.example.demo;

public class Test {
    public static void main(String[] args) {
//        定义一个变量来统计有多少个质数
        int count = 0;
        
//        外循环:遍历101~200这个范围
        for (int i = 101; i <= 200; i++) {
//            i表示101~200之间的每一个数字
            
            boolean flag = true;
//            内循环:判断当前数字是否为一个质数
            for (int j = 0; j < i; j++) {
//                j表示2~99之间的每一个数字
                if(i % j == 0){
                    flag = false;
//                    跳出单层循环,内循环
                    break;
                }
            }
            if(flag){
                System.out.println("数字"+i+"是质数");
                count++;
            }else {
                System.out.println("数字"+i+"不是质数");
            }
        }

    }
}

开发验证码

需求

  • 定义方法实现随机产生一个5位的验证码

  • 验证码格式:

    长度为5

    前四位是大写字母或者小写字母

    最后一位是数字

package com.example.demo;

import java.util.Random;

public class Test {
    public static void main(String[] args) {
//        方法:
//        要在一对没有什么规律的数据中随机抽取,可以把这些数据放大数组当中,再随机抽取一个索引

//        1.把大写字母和小写字母都放到数组当中
        char[] chs = new char[52];
        for (int i = 0; i < chs.length; i++) {
            if(i <= 25) {
//                添加小写字母
                chs[i] = (char) (97 + i);
            }else{
//                添加大写字母
                chs[i] = (char) (65+ i -26);
            }
        }

//        定义一个字符串类型的变量,用来记录最终的结果
        String result = "" ;
//        2.随机抽取4次
        Random random = new Random();
        for (int i = 0; i < 4; i++) {
            int randomIndex =  random.nextInt(chs.length);
//            拼接字母
            result += chs[randomIndex];
        }

//        3.随机抽取一次数字0~9
        int num = random.nextInt(10);
//        拼接数字
        result += num;
        System.out.println(result);
    }
}

数组元素的复制

需求

​ 把一个数组中的元素复制到一个新数组中去。

package com.example.demo;

public class Test {
    public static void main(String[] args) {
//        定义一个数组
        int arr[] = {1,2,3,4,5};
//        定义一个长度跟老数组相同的新数组
        int newArr[] = new int[arr.length];
//        将老数组中的东西复制到新数组中
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
//        打印新数组里面的元素
        for (int i = 0; i < newArr.length; i++) {
            System.out.println(newArr[i]);
        }
    }
}

评委打分

需求

​ 在唱歌比赛中,有6名评委给选手打分,分数范围是[0-100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。

解题思路

​ 1.定义一个数组,用来存储6名评委打分(0~100)

​ 2.求出数组中的最大值

​ 3.求出数组的最小值

​ 4求出数组中6个分数的总和

​ 5.(总和-最大值-最小值)/4

数字加密

需求

​ 某系统的数字密码(大于0),比如1983,采用加密方式进行传输

​ 规则如下:

​ 先得到每位数,然后每位数都加上5,再对10求余,最后将所有数字翻转,得到一串新数。

解题思路

​ 1.把整数里面的每一位放到数组当中

​ 2.加密:每位数+5,再对10求余,将所有数字反转

​ 3.把数组里面的每一个数字进行拼接,变成加密之后的结果。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值