11.Java方法的综合练习题大全-双色球彩票系统,数字的加密和解密等试题(上)

简介: 11.Java方法的综合练习题大全-双色球彩票系统,数字的加密和解密等试题

前言

一、数组的遍历

1.注意点:输出语句的用法

System.out.println("abc");  //先打印abc,再进行换行
        System.out.print("abc");    //只打印abc,不换行
        System.out.println();       //不打印任何数据,只做换行处理

2.题目正解

import java.sql.SQLOutput;
public class MethodTest1 {
    public static void main(String[] args) {
        int[] arr={11,22,33,44,55};
        printArr(arr);
        //输出语句的用法
   /* System.out.println("abc");  //先打印abc,再进行换行
        System.out.print("abc");    //只打印abc,不换行
        System.out.println();       //不打印任何数据,只做换行处理
    */
    }
    public static void  printArr(int[] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if(i==arr.length-1){
                System.out.print(arr[i]);
            }else{
                System.out.print(arr[i]+",");
            }
        }
        System.out.print("]");
    }
}

二、数组最大值

public class MethodTest2 {
    public static void main(String[] args) {
        int[] arr={1,0,9,5,4,2,6};
        System.out.println("数组的最大值是:"+getMax(arr));
    }
    public static int getMax(int[] arr){
        int max=arr[0];      //max必须是数组中的数值
        for (int i = 1; i+1< arr.length; i++) {
            if(arr[i]>max){
                max=arr[i];
            } 
        }
        return max;
    }
}

三、判断是否存在

import java.util.Scanner;
public class MethodTest3 {
    public static void main(String[] args) {
       int[] arr={1,2,3,4,5};
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int num=sc.nextInt();
        System.out.println("整数存在吗?"+getExisit(num,arr));
    }
    public static boolean getExisit(int num,int[] arr){
        for (int i = 0; i < arr.length; i++) {
            if(num==arr[i]){
                 return true;
            }
        }
        return false;
    }
}

四、复制数组

比如说想要下标3~7之间的数据

分析结果如下:

public class MethodTest4 {
    public static void main(String[] args) {
        //1.定义原始数组
        int[] arr={1,2,3,4,5,6,7,8,9};
        //2.调用方法拷贝数据
        int[] copyArr=copyOfRange(arr,3,7);
        //3.遍历copyArr
        for (int i = 0; i < copyArr.length; i++) {
            System.out.print(copyArr[i]+" ");
        }
    }
    public static int[] copyOfRange(int[] arr,int from,int to){  
        //1.定义数组
        //静态:知道所有元素
        //动态:不知道所有元素,但是知道要存几个元素,这个可以用to-from算出来
        int[] newArr=new int[to-from];
        //2.把原始数组arr中的from到to上对应的元素,直接拷贝到newArr中
        //格式:数组名[索引]=数据值;
        //伪造索引的思想:没有一个变量能表示当前索引的范围用
        int index=0;
        for(int i=from;i<to;i++){
            newArr[index]=arr[i];
            index++;
        }
        //3.把新数组返回,注意要将方法的返回类型改为int[]
        return newArr;
    }
}

五、案例一:卖飞机票

import java.util.Scanner;
public class Test3 {
    public static void main(String[] args) {
        //分析:
        //1.键盘录入机票,月份,头等舱或者经济舱
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入机票的原价:");
        int price=sc.nextInt();
        System.out.println("请输入购买机票的月份:");
        int month=sc.nextInt();
        System.out.println("请输入购买机票的舱位(0代表头等舱,1代表经济舱):");
        int seat=sc.nextInt();
        //2.判断是淡季还是旺季
        if(month>=5&&month<=10){  //3.继续判断当前机票是经济舱还是头等舱
            //旺季
            if(seat==0){
                //头等舱
                price=(int)(price*0.9);   //机票一般是整数,这里将最终机票的价格强转成整数
            }else if(seat==1){
                //经济舱
                price=(int)(price*0.85);  //注意强制转换类型的时候要在后面式子的整体加小括号
            }else{
                System.out.println("没有这个舱位");
            }
        }else if(month>=1&&month<=4||month>=11&&month<=12){
            //淡季
            if(seat==0){
                //头等舱
                price=(int)(price*0.7);   //机票一般是整数,这里将最终机票的价格强转成整数
            }else if(seat==1){
                //经济舱
                price=(int)(price*0.65);  //注意强制转换类型的时候要在后面式子的整体加小括号
            }else{
                System.out.println("没有这个舱位");
            }
        }else{
            //表示键盘录入的月份是一个非法数据
            System.out.println("键盘输入的月份不合法");
        }
        //4.根据实际情况计算出相应的价格
        System.out.println(price);
    }
}

为了提高代码的复用性,可以将下面圈出来的写成方法.

优化后的代码:

import java.util.Scanner;
public class Test3 {
    public static void main(String[] args) {
        //分析:
        //1.键盘录入机票,月份,头等舱或者经济舱
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入机票的原价:");
        int price=sc.nextInt();
        System.out.println("请输入购买机票的月份:");
        int month=sc.nextInt();
        System.out.println("请输入购买机票的舱位(0代表头等舱,1代表经济舱):");
        int seat=sc.nextInt();
        //2.判断是淡季还是旺季
        if(month>=5&&month<=10){  //3.继续判断当前机票是经济舱还是头等舱
            //旺季
 price=getPrice(price,seat,0.9,0.85);
        }else if(month>=1&&month<=4||month>=11&&month<=12){
            //淡季
                       price=getPrice(price,seat,0.7,0.65);
        }else{
            //表示键盘录入的月份是一个非法数据
            System.out.println("键盘输入的月份不合法");
        }
        //4.根据实际情况计算出相应的价格
        System.out.println(price);
    }
    //1.我要干嘛?根据舱位和折扣计算最终的票价
    //2.我干这件事,需要什么?票的原价,舱位,头等舱的折扣,经济舱的折扣
    //3.方法的使用是否需要这个结果?需要
    public static int getPrice(int price,int seat,double v0,double v1){
        if(seat==0){
            //头等舱
            price=(int)(price*0.9);   //机票一般是整数,这里将最终机票的价格强转成整数
        }else if(seat==1){
            //经济舱
            price=(int)(price*0.85);  //注意强制转换类型的时候要在后面式子的整体加小括号
        }else{
            System.out.println("没有这个舱位");
        }
        return price;
    }
}

idea中快捷键的小扩展:

ctrl+alt+M 选中代码,自动抽取方法

ctrl+p 使用方法时在小括号中点击,可以看到该方法的形参内容

六、案例二:找质数

public class Test5 {
    public static void main(String[] args) {
        //判断101-200之间有多少个质数,并输出所有质数
        //怎么判断质数?
        //方法1.循环判断2~x-1之间有没有数字能被它整除
        //方法2.循环判断2~这个数的平方根
        //方法一:
        //定义变量:赋值100
        //判断i是否为质数
        for (int i = 101; i <= 200; i++) {
            //i依次表示循环中的每一个数字
            boolean flag=true;
            for(int j=2;j<i;j++){
                //j表示2-99之间的每一个数字
                if(i%j==0){
                    flag=false;
                    break;
                }
            }
            if(flag){
                System.out.println("当前数字"+i+"是质数");
            }
        }
    }
}

注意上面代码中break跳出的是单层循环,这里跳出的是内循环,跳出之后执行下面的语句.

七、案例三:开发验证码

分析:

题目核心:随机

在以后如果要在一堆没有规律的数据中抽取,可以先把数据放到数组中,再随机抽取一个索引

1.大写字母和小写字母都放到数组中

2.随机抽取四次

3.随机抽取一个数字0~9

import java.util.Random;
public class Test6 {
    public static void main(String[] args) {
        /*
        需求:定义方法实现随机产生一个五位的验证码
        验证码格式:
        长度为5
        前四位是大写字母或者小写字母
        最后一位是数字
         */
        /*
        1.大写字母和小写字母都放到数组中
        2.随机抽取四次
        3.随机抽取一个数字0~9
         */
        char[] chs=new char[52];
        for (int i = 0; i < chs.length; i++) {
            //chs[i]='a';
            //ASCII码表
            if(i<=25){
                //添加小写字母
                //a----97
                chs[i]=(char)(97+i);
            }else{
                //添加大写字母
                //A----65
                //这里要减去26,因为如果i是26,当65+26时就不是想要的大写字母A
                chs[i]=(char)(65+i-26);
            }
        }
        //遍历
       /* for (int i = 0; i < chs.length; i++) {
            System.out.print(chs[i]+" ");
        }
        */
        //定义一个字符串类型的变量,用来记录最终的结果
        String result="";    //长度为0,什么都没有的字符串
        //2.随机抽取四次
        //随机抽取数组中的索引
        Random r=new Random();
        //循环四次
        for (int i = 0; i < 4; i++) {
            //想要的索引是0-51
            int randomIndex=r.nextInt(chs.length);
            //利用随机索引,获取对应的元素
            //System.out.println(chs[randomIndex]);
            //将四个字符拼接起来
            result=result+chs[randomIndex];
        }
        //3.随机抽取一个数字0-9
        int number= r.nextInt(10);
        //将result和number拼接,将结果赋值给reuslt
        result=result+number;
        System.out.println(result);
    }
}

八、案例四:数字元素的复制

分析:

1.定义一个老数组并存储一些元素

2.定义一个新数组的长度和老数组一样

3.遍历老数组,得到老数组里面的每一个元素,依次存入到新数组中

public class Test7 {
    public static void main(String[] args) {
        /*
        需求:
        把一个数组里面的元素复制到另一个数组里
         */
//        分析:
//        1.定义一个老数组并存储一些元素
        int[] arr={1,2,3,4,5};
//        2.定义一个新数组的长度和老数组一样
        int[] newArr=new int[arr.length];
//        3.遍历老数组,得到老数组里面的每一个元素,依次存入到新数组中
        for (int i = 0; i < arr.length; i++) {
            newArr[i]=arr[i];
        }
        //4.数组里面已经存满元素了
        for (int i = 0; i < newArr.length; i++) {
            System.out.println(newArr[i]);
        }
    }
}

九、案例五:评委打分

分析:

1.定义一个数组,用来存储6名评委的打分(0-100)键盘录入

2.求出数组中的最大值

3.求出数组中的最小值

4.求出数组的总和

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

方法:

1.我要干嘛?

定义一个数组,用来存储6名评委的打分(0-100)

2.我需要干什么?

什么也不需要

3.干完了这件事,需不需要返回?

需要返回

注意点:

1.键盘录入评委的打分时,判断打出的分数是不是在0-100之间,如果在这个范围内存这个数据,不在这个范围内,不存这个数据且不做其他的改变.所以要注意存放数据的数组下标++的放置位置.

2.第五步/4,最好不要写死,当数组长度变化时该代码还需要修改,所以最好写成:数组.length-2

小技巧:

变量的批量修改:

选中变量名,点击shift+f6,在修改变量名,就可对变量名批量修改

import java.util.Scanner;
public class Test8 {
    public static void main(String[] args) {
        //1.定义一个数组,用来存储6名评委的打分
        int[] scoreArr=getScores();
        for (int i = 0; i < scoreArr.length; i++) {
            System.out.println(scoreArr[i]);
        }
        //2.求出数组的最大值
        int max=getMax(scoreArr);
        //3.求数组的最小值
        int min=getMin(scoreArr);
        //4.求出数组中6个分数的总和
        int sum=getSum(scoreArr);
        //5.(总和-最大值-最小值)/(长度-2)
        int avg=(sum-max-min)/(scoreArr.length-2);
        //打印结果
        System.out.println("选手的最终得分是:"+avg);
    }
    //求出数组中6个分数的总和
    public static int getSum(int[] scoreArr){
        int sum=0;
        for (int i = 0; i < scoreArr.length; i++) {
            sum=sum+scoreArr[i];
        }
        return sum;
    }
    //求数组的最大值
    public static int getMax(int[] scoreArr){
        int max=scoreArr[0];
        for (int i = 1; i < scoreArr.length; i++) {
            if(scoreArr[i]>max){
                max=scoreArr[i];
            }
        }
        return max;
    }
    //求数组的最小值
    //变量的批量修改
    //选中变量名,点击shift+f6,在修改变量名,就可对变量名批量修改
    public static int getMin(int[] scoreArr){
        int min=scoreArr[0];
        for (int i = 1; i < scoreArr.length; i++) {
            if(scoreArr[i]<min){         //注意在将求最大值的代码复制过来之后,要将这里改为<
                min=scoreArr[i];
            }
        }
        return min;
    }
    public static int[] getScores(){
        //定义数组
        int[] scores=new int[6];
        //使用键盘录入的形式,输入分数(0-100)
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i < scores.length; ) {     //这里的条件控制为空,表示如果录入错误,下标不进行修改,继续在当前下标录入,当录入成功后再进行i++,所以写在下面
            System.out.println("请输入评委的打分:");
            int score=sc.nextInt();
            if(score>=0&&score<=100){
                scores[i]=score;
                i++;            //只有录入了一个合法的数据,才录入,录入成功后才往下录入下一个成绩
            }else{
                System.out.println("成绩超出了范围,继续录入,当前的i为:"+i);
            }
        }
        return scores;
    }
}

十、案例六:数字加密

针对这种数字的批量计算,我们的思路是把这些数字放到数组中,然后再对里面的元素进行运算

分析:

1.把整数中的每一位放到数组中

2.加密

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

public class Test9 {
    public static void main(String[] args) {
        /*
        需求:
        某系统的数字密码(大于0).比如1983,采用加密方式进行传输
        规则如下:
        每位数+5
        再对10求余
        最后将所有数字反转
        得到一串新数字
         */
//        分析:
//        1.把整数中的每一位放到数组中
        int[] arr={1,9,8,3};
//        2.加密(为了让思路更加清晰,我们让每个循环干一件事情)
        //(1)每一位数字+5
        for (int i = 0; i < arr.length; i++) {
            arr[i]=arr[i]+5;
        }
        //(2)再对10求余
        for (int i = 0; i < arr.length; i++) {
            arr[i]=arr[i]%10;
        }
        //(3)将所有数字反转
        //定义两个索引变量,左右两边相互交换,直到左边的索引比右边的索引大或者相等时停止
        for (int i = 0,j=arr.length-1; i < j; i++,j--) {
            int temp=arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        }
//        3.把数组里面的每一个数字进行拼接,变成加密之后的结果
        int number=0;
        for (int i = 0; i < arr.length; i++) {
            //arr[i]
            number=number*10+arr[i];
        }
        System.out.println(number);
    }
}

接下来针对这道题中的难点进行讲解:

如何将一个整数中的数字每一位放到数组里面?

public class Test10 {
    public static void main(String[] args) {
        /*
        需求:
        把整数每一位都添加到数组中
        大于0的整数
        反向推导
         */
        //需要有一个数组
        //动态初始化(不知道数组元素的时候,但是知道有几个)  静态初始化(知道数组元素)
        //使用动态初始化  int[] arr=new int[数组的长度];
        //数组的长度不知道,所以要计算出
        //1.计算出数组的长度
        int number=12345;
        int temp=number;
        //定义一个变量进行统计
        int count=0;
        while (number!=0){        //当number不等于0时就要去掉
            //每一次循环去掉右边的一个数字
            number=number/10;
            //去掉一次计数器就自增一次
            count++;
             //循环结束之后,count就是数字的个数
        }
        //2.定义数组
        //动态初始化
        int[] arr=new int[count];
        //3.把整数每一位都添加到数组中
        //不能从number中获取数字,因为上面的循环结束后,number的值为0
        //所以还要定义一个变量,临时记录number的值
        int index=arr.length-1;    //注意要把5放到最大索引,所以这里index不是0,而是最大索引
        while(temp!=0){
            //获取temp里面的每一位都添加到数组中
            int ge=temp%10;
            //再去掉右边的那位数字
            temp=temp/10;
            //再把当前获取的个位数添加到数组当中
            //arr[索引]=ge;    所以这里要定义变量索引
            arr[index]=ge;
            index--;
        }
        //验证结果是不是:1 2 3 4 5
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
}

相关文章
|
3天前
|
JavaScript Java BI
Java毕设之新生报到系统的设计与实现
Java毕设之新生报到系统的设计与实现
11 3
|
1天前
|
数据采集 前端开发 Java
Java医院绩效考核系统源码maven+Visual Studio Code一体化人力资源saas平台系统源码
医院绩效解决方案包括医院绩效管理(BSC)、综合奖金核算(RBRVS),涵盖从绩效方案的咨询与定制、数据采集、绩效考核及反馈、绩效奖金核算到科到组、分配到员工个人全流程绩效管理;将医院、科室、医护人员利益绑定;全面激活人才活力;兼顾质量和效益、长期与短期利益;助力医院降本增效,持续改善、优化收入、成本结构。
4 0
|
1天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
13 5
|
1天前
|
存储 Java API
java对接IPFS系统-以nft.storage为列
java对接IPFS系统-以nft.storage为列
11 2
|
2天前
|
监控 前端开发 Java
Java基于B/S医院绩效考核管理平台系统源码 医院智慧绩效管理系统源码
医院绩效考核系统是一个关键的管理工具,旨在评估和优化医院内部各部门、科室和员工的绩效。一个有效的绩效考核系统不仅能帮助医院实现其战略目标,还能提升医疗服务质量,增强患者满意度,并促进员工的专业成长
9 0
|
2天前
|
XML JavaScript Java
详解Java解析XML的四种方法
详解Java解析XML的四种方法
|
2天前
|
Java 云计算
Java智能区域医院云HIS系统SaaS源码
云HIS提供标准化、信息化、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。优化就医、管理流程,提升患者满意度、基层首诊率,通过信息共享、辅助诊疗等手段,提高基层医生的服务能力构建和谐的基层医患关系。
16 2
|
2天前
|
存储 Java API
掌握8条方法设计规则,设计优雅健壮的Java方法
掌握8条方法设计规则,设计优雅健壮的Java方法
|
2天前
|
Java C语言
详解java方法与递归
详解java方法与递归
9 3
|
3天前
|
前端开发 Java 关系型数据库
Java医院绩效考核系统源码B/S架构+springboot三级公立医院绩效考核系统源码 医院综合绩效核算系统源码
作为医院用综合绩效核算系统,系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
22 2