Java入门-编程练习

买飞机票

  • 机器价格按照淡季旺季、头等舱经济舱收费、输入机票原价、月份和头等舱或经济舱
  • 旺季(5-10)头等舱9折 经济舱8.5折
    淡季 (11-4) 头等舱7折 经济舱6.5折
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        //让用户输入原价 月份 仓位类型
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入机票原价: ");
        double money = sc.nextDouble();


        System.out.println("请您输入机票月份: ");
        int month = sc.nextInt();

        System.out.println("请您输入仓位类型: ");
        String type = sc.next();

        System.out.println("机票优惠后价格"+ calc(money,month,type));
    }
    public static double calc(double money,int month,String type) {
        if (month >= 5 && month <= 10) {
            switch (type) {
                case "头等舱":
                    money *= 0.9;
                    break;
                case "经济舱":
                    money *= 0.85;
                    break;
                default:
                    System.out.println("您输入的有问题");
                    money = -1;
            }
        } else if (month == 11 || month == 12 || month >= 1 && month <= 4) {
            switch (type) {
                case "头等舱":
                    money *= 0.7;
                    break;
                case "经济舱":
                    money *= 0.65;
                    break;
                default:
                    System.out.println("您输入的有问题");
                    money = -1;
            }
        } else {
            System.out.println("您输入价格有误");
            return -1;
        }
        return money;
    }}

总结

  1. 遇到判断值匹配的时候选择什么结构实现?
    switch分支结构
  2. 遇到判断区间范围的时候选择什么结构?
    if分支结构

找素数

  • 判断101-200间有多个素数 并输出所有素数
public class practice2 {
    public static void main(String[] args) {
        for (int i = 101; i <= 200 ; i++) {

            boolean flag = true;//一开始认为是素数

            for (int j = 2; j < i/2; j++) {
                if(i % j == 0){
                    flag = false;
                    break;
                }

            }
        if(flag){
            System.out.print(i+"\t");
        }
        }
    }
}

开发验证码

  • 定义一个方法 随机产生一个5位数验证码 每位可能是数字、大写、小写字母
import java.util.Random;

public class Pract3 {
    public static void main(String[] args) {
        //获得一个随机验证码
        String code = creatCode(5);
        System.out.println("验证码"+code);

    }

    public static String creatCode(int n){
        String code = "";
        //2.定义一个for循环 循环n次 依次生成随机字符
        Random r = new Random();
        for (int i = 0; i < n; i++) {
            int type = r.nextInt(3);
            switch (type){
                case 0:
                    //大写字符(A 65 - Z 65+25)
                    char ch = (char) (r.nextInt(26)+65);
                    code += ch;
                    break;
                case 1:
                    //小写字符(a 97 - z 97+25)
                    char ch1 = (char) (r.nextInt(26)+97);
                    code += ch1;
                    break;
                case 2:
                    //数字字符
                    code += r.nextInt(10);//0-9
                    break;
            }

        }return code;
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }
}

核心逻辑

  1. 定义一个String变量存储验证码字符
  2. 定义一个for循环 循环5次
  3. 随机生成0 1 2的数据 依次代表当前位置要生成大写 小写 数字
  4. 把0 1 2 交给switch生成对应类型的随机字符 把字符交给String变量
  5. 循环结束后 返回String类型的变量即是所求的验证码结果

把一个数组中的元素复制到另一个数组中

public class Practice4 {
    public static void main(String[] args) {
        int[] arr1= {11,23,3,4,};
        int[] arr2=new int[arr1.length];
        copy(arr1,arr2);

        printArray(arr1);
        printArray(arr2);

    }
    public static void copy(int[] arr1,int[] arr2){
        for (int i = 0; i < arr1.length; i++) {
            arr2[i]=arr1[i];
        }
    }
    public static void printArray(int[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length-1?arr[i]:arr[i]+",");

        }
        System.out.println("]");
    }
}
  • 数组的拷贝需要创建一个新数组 把原来数组的元素赋值过来
在这里插入代码片public class Practice4 {
    public static void main(String[] args) {
        int[] arr1= {11,23,3,4,};
        int[] arr2=new int[arr1.length];
        copy(arr1,arr2);

        printArray(arr1);
        printArray(arr2);

    }
    public static void copy(int[] arr1,int[] arr2){
        for (int i = 0; i < arr1.length; i++) {
            arr2[i]=arr1[i];
        }
    }
    public static void printArray(int[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length-1?arr[i]:arr[i]+",");

        }
        System.out.println("]");
    }
}

评委打分

  • 6名评委打分 分数范围为0-100 选手最后得分为:去掉最高分 去掉最低分后的4个评委的平均分
 import java.util.Scanner;

public class PRactice5 {
    public static void main(String[] args) {
        int[] scores = new int[6];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < scores.length; i++) {
            System.out.println("请您输入第"+(i+1)+"个评委的分数: ");
            int score = sc.nextInt();
            scores[i]=score;
        }
        int max = scores[0];
        int min = scores[0];
        int sum = 0;
        for (int i = 0; i < scores.length; i++) {
            if (scores[i]> max){
                max = scores[i];
            }
            if (scores[i]<min){
                min = scores[i];
            }
            sum += scores[i];
        }
        double result;
        result = (sum - max - min) / (scores.length - 2);
        System.out.println("最终得分为"+ result );
    }
}

数字加密

  • 要求:某系统的数字密码 先得到每位数 然后每位数都加5 再对10取余 最后将所有数字反转 得到一串新数
import java.util.Scanner;

public class Practice6 {
    public static void main(String[] args) {
        System.out.println("请您输入数字: ");
        Scanner sc = new Scanner(System.in);
        int length = sc.nextInt();4
        int[] arr = new int[length];

        for (int i = 0; i < arr.length ; i++) {
            System.out.println("请输入要加密的第"+(i + 1)+"个数字: ");
            int score = sc.nextInt();
            arr[i]= score;
        }
        printArray(arr);

        for (int i = 0; i < arr.length; i++) {
           arr[i] = ( arr[i] + 5 )%10;
        }
        for (int i = 0,j = arr.length - 1; i < j; i++,j--) {
            int temp = arr[j];
            arr[j] = arr[i];
            arr[i] = temp;
        }
        printArray(arr);
    }
    public static void printArray(int[] arr){
        System.out.println("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == arr.length - 1 ?arr[i]:arr[i]+",");
        }
        System.out.println("]");
    }
}
  • 如何完成数组元素反转?

1.定义2个变量分别占据数组首尾

2.一个变量往前走 一个变量往后走 同步交换双方位置

API键盘录入技术复习

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值