Java基础面向过程小练习

208 阅读5分钟

1.png

1.关于飞机票购买问题

- 机票价格按照淡季旺季,头等舱、经济舱收费,输入机票价格、月份头等舱或者经济舱

- 按照一下规则来计算机机票的价格(5-10)头等舱9折,经济舱8.5折,淡季11月-来年四月 头等舱7折,经济舱6.5折

package com.company;

//ctrl+alt+M抽取方法

//机票价格按照淡季旺季,头等舱、经济舱收费,输入机票价格、月份头等舱或者经济舱
//按照一下规则来计算机机票的价格(5-10)头等舱9折,经济舱8.5折,淡季11月-来年四月 头等舱7折,经济舱6.5折


import java.util.Scanner;

public class airTicket {
    public static void main(String[] args) {

        //分析 1.输入机票价格,月份,头等舱或者经济舱

        System.out.println("请输入机票价格:");
        Scanner scanner=new Scanner(System.in);
        int price=scanner.nextInt();
        System.out.println("请输入月份:");
        int mouth=scanner.nextInt();
        System.out.println("请输入种类:");
        int type=scanner.nextInt();

        //先判断是淡季还是旺季
        if (mouth>=5&&mouth<=10){
            //判断座位,算出价格
            price = getPrice(type, price, 0.9, 0.85);

        }else if ((mouth>=1&&mouth<5)||(mouth>=11&&mouth<=12)){

            price = getPrice(type, price, 0.7, 0.65);

        }else {
            System.out.println("没有该月份");
        }

        System.out.println(price);
    }

    private static int getPrice(int type, int price, double x, double x1) {
        if (type ==1){
            price = (int) (price * x);
        }else if (type ==2){
            price =(int)(price * x1);
        }else {
            System.out.println("没有该座位");
        }
        return price;
    }
}

2.猜数字小游戏

- 创建一个随机数,来进行猜,系统给出相应的提示

package com.company;

import java.util.Random;
import java.util.Scanner;

public class guessNumber {
    public static void main(String[] args) {
        //1.创建一个随机数
        Random r=new Random();
        int result=r.nextInt(50);

        //2.利用while循环进行猜数字环节,猜对后退出
        while (true){
            Scanner scanner=new Scanner(System.in);
            int  scanNumber=scanner.nextInt();
            if (scanNumber>result){
                System.out.println("猜大了");
            }else if (scanNumber<result){
                System.out.println("猜小了");
            }else {
                System.out.println("猜对了");
                break;
            }
        }
    }
}

3.开发验证码问题

- 要求验证码由五位组成,前四个是由26个字母大小写任意组合,最后一位是1数字

package com.company;

import java.util.Random;
import java.util.Scanner;

public class randVerification {
    public static void main(String[] args) {
        //随机验证码 首先创建一个结果来接受验证码
            String result="";
        //1.将所有的a-z以及A-Z存放到数组当中去
        char[] chr = new char[52];
        for (int i = 0; i < 52; i++) {
            //加入小写字母 a==97
            if (i < 26) {
                chr[i] = (char) (97 + i);
            } else {
                //加入大写字母 A==65
                chr[i]=(char)(65+i-26);
            }
        }
        Random random=new Random();
        //2.从中随机抽取四个字母
        for (int i=0;i<4;i++){

            int randomIndex=random.nextInt(52);
            //利用随机索引获取对应元素,并加入到结果上
            result=result+chr[randomIndex];
        }
        //3.随机抽取0~9
            int number=random.nextInt(10);

        //4.拼接结果并且运行
            result=result+number;

    }
}

4.一个数据将它每一位存放在数组当中

- 需求:手动输入一个数据,将这个数据整数上的每一位放到数组上

- 1.通过键盘输入一个数据

- 2.统计该数据的位数

- 3.将数据进行分割

- 4.将数据进行打印输出

package com.company;

import java.util.Scanner;

public class NumberSplit {
    //需求:手动输入一个数据,将这个数据整数上的每一位放到数组上
    public static void main(String[] args) {
        /*分析:
        1.通过键盘输入一个数据
        2.统计该数据的位数
        3.将数据进行分割
        4.将数据进行打印输出

         */
        //1.通过键盘输入一个数据
        Scanner scanner = new Scanner(System.in);
        int number = scanner.nextInt();
        //2.统计该数据的位数
        int temp = number;
        int count = 0;//统计位数
        while (number != 0) {
            number = number / 10;
            count++;
        }
        //3.将数据进行分割,并添加到数组中
        int[] arr=new int[10];
        for (int i = count-1; i >=0; i--) {
            arr[i]=temp%10;
            temp=temp/10;
        }
        //4.对数据进行打印输出
        for (int i = 0; i < count; i++) {
            System.out.print( arr[i]+" ");
        }
    }
}

5.数字加密

需求:

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

比如规则如下

1.每位数字+5

2.在对10取余

3.最后将所有数字反转

4.得到新的串

package com.company;

//数字加密

/*某系统的数字密码大于0,比如1983,采用加密形式进行传输,
    比如规则如下
       1.每位数字+5
       2.在对10取余
       3.最后将所有数字反转
       4.得到新的串
    */
public class DigitalEncryption {
    public static void main(String[] args) {
        //分析:
        //1.创建一个数组存放1983
        int[]arr={1,9,8,3};
        //2.对数组中每个元素进行+5操作
        for (int i = 0; i < arr.length; i++) {
            arr[i]=arr[i]+5;
        }
        //3.对数组中的数据就行取余操作
        for (int i = 0; i < arr.length; i++) {
            arr[i]=arr[i]%10;
        }
        //4.将数组中的数据进行反转操作,临时变量作为中间值
        int temp=0;
        for (int i=0,j=arr.length-1;i<j;i++,j--){
            temp=arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        }
        //5.得到新的串
        int result=0;
        for (int i = 0; i <arr.length ; i++) {
            result=result*10+arr[i];
        }
        System.out.println("加密后的结果是:"+result);
    }
}

6.数字解密

某系统的数字密码大于0,比如1983,采用加密形式进行传输,规则如下

1.每位数字+5

2.在对10取余

3.最后将所有数字反转

4.得到新的串

将上述信息进行解密

分析:

1.先将其反转过来

2.若对应的是0~4加10,若对应的是5~9则不变

3.拼接字符串

代码实现如下:
package com.company;

/*某系统的数字密码大于0,比如1983,采用加密形式进行传输,
    比如规则如下
       1.每位数字+5
       2.在对10取余
       3.最后将所有数字反转
       4.得到新的串
       将上述信息进行解密
    */

/*
 * 1.先将其反转过来
 * 2.若对应的是0~4加10,若对应的是5~9则不变
 * 3.拼接字符串
 * */
public class DigitalDecryption {
    public static void main(String[] args) {
        int[] arr = {8, 3, 4, 6};
        //1.反转
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        // 2.若对应的是0~4加10,若对应的是5~9则不变
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= 0 && arr[i] <= 4) {
                arr[i] = arr[i] + 10;
            }
        }
        for (int i = 0; i < arr.length; i++) {
            arr[i]=arr[i]-5;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
}

7.评委抽奖

需求:

一个大v直播抽奖,奖金分别有(2,588,888,1000,10000) 请用代码抽奖并打印出每个奖项,奖项的出现的顺序要随机且不重复

打印效果如下(随机顺序)

package com.company;

import java.util.Random;

/*需求:
 * 一个大v直播抽奖,奖金分别有(2,588,888,1000,10000)
 * 请用代码抽奖并打印出每个奖项,奖项的出现的顺序要随机且不重复
 * 打印效果如下(随即顺序)*/
public class LotteryDraw {
    /*分析:
     * 1.创建一个数组,作为中奖的对象
     * 2.打乱数组顺序,循环遍历
     * 3.打印中奖结果*/
    public static void main(String[] args) {
        int[] arr = {2, 588, 888, 1000, 10000};
        Random random = new Random();
        //生成随机数的代码 ,也可以利用random生成两个随机数索引,让这两个索引进行交换即可
        for (int i = 0; i < arr.length; i++) {
            int randomIndex= random.nextInt(arr.length);
            int temp=arr[i];
            arr[i]=arr[randomIndex];
            arr[randomIndex]=temp;
        }
        
        for (int i = 0; i < arr.length; i++) {

            System.out.print(arr[i]+" ");
        }

    }
}

8.评委打分

需求:6个评委打分,去掉最高分和最低分求平均分

package com.company;


import java.util.Scanner;

//  6个评委打分,去掉最高分和最低分求平均分
public class RatingByJudge {

    public static void main(String[] args) {
        //分析:1.将评委打分存放到数组当中
        int[]arr=setSource();
//        for (int i=0;i<6;i++){
//            System.out.println(arr[i]);
//        }
        //2.求最高分
        int max=getMax(arr);
//        System.out.println("最大值是"+max);
        //3.求最低分
        int min=getMin(arr);
        //4.求总成绩
        int sum=getSum(arr);
        //5.求平均分
        int average=(sum-max-min)/(arr.length-2);
        System.out.println("该选手的最终成绩为:"+average);

    }

    public static int[] setSource() {
        int[] arr = new int[6];
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 6; ) {
            int source = scanner.nextInt();
            if (source <= 100 && source > 0) {
                arr[i] = source;
                i++;
            } else System.out.println("输入成绩有误,当前是第"+(i+1)+"位评委");

        }
        return arr;
    }
    public static int getMax(int[]arr){

        int max=arr[0];
        for (int i = 1; i <arr.length ; i++) {
            if (max<arr[i])
            max=arr[i];
        }
        return max;
    }
    public static int getMin(int arr[]){
        int min=arr[0];
        for (int i = 1; i <arr.length ; i++) {
            if (min>arr[i])
                min=arr[i];
        }
        return min;
    }
    public static int getSum(int arr[]){
        int sum=0;
        for (int i=0;i<6;i++){
            sum+=arr[i];
        }

        return sum;
    }
    }