A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 平凡的鱼 中级黑马   /  2015-9-17 19:21  /  504 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

/**
* 需求 :  模拟密码加密  
        键盘录入6个数的int类型的密码
        存入数组中 然后反转,//数组的反转
        反转后的数组 角标为奇数的互相换 1 和3换  3和 5换 以此类推
        然后数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
        打印出来 就欧了 密码是[1,2,3,4,5,6]的话 答案是[6, 5, 4, 1, 2, 3]
*/
public class JiaMiTest {
        public static void main(String[] args) {
                /*
                int[] arr = {1,2,3,4,5,6};
                print(arr);
                reverse(arr);
                System.out.print("翻转后: ");
                print(arr);
                swap(arr);
                System.out.print("奇数角标对应的元素交换后:");
                print(arr);
                swapWithIndex(arr);
                System.out.print("第一个奇数角标对应的元素和最后一个奇数角标对应的元素交换后:");
                print(arr);*/
                int[] arr = getData();
                System.out.print("加密前:");
                print(arr);
                getSecurityArr(arr);
                System.out.print("加密后:");
                print(arr);
               
        }
        //获取加密后的数组
        public static void getSecurityArr(int[] arr){
                reverse(arr);
                swap(arr);
                swapWithIndex(arr);
        }
        //通过键盘录入,返回int[]数组
        public static int[] getData(){
                int[] arr = {1,2,3,4,5,6};
                return arr;
        }
        public static void print(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.println(" ]");               
        }
        //数组的反转
        public static void reverse(int[] arr){
                for(int i=0,j=arr.length-1;i<=j;i++,j--){
                        swap(arr,i,j);
                }
        }
        //数组元素的交换
        private static void swap(int[] arr,int i,int j){
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
        }
        //反转后的数组 角标为奇数的互相换 1 和3换  3和 5换 以此类推
        public static void swap(int[] arr){
                for(int i=1,j=i+2;i<arr.length&&j<arr.length;i+=2,j+=2){//1,3  3 5, 5,7
                        swap(arr,i,j);
                }
        }
        //然后数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
        public static void swapWithIndex(int[] arr){
                int lastIndex = ((arr.length-1)%2==0)?arr.length-2:arr.length-1;
                swap(arr, 1, lastIndex);
        }
       
}       

3 个回复

倒序浏览
加油!!!!

评分

参与人数 1黑马币 +6 收起 理由
平凡的鱼 + 6 赞一个!

查看全部评分

回复 使用道具 举报
兄弟给你32个赞···
回复 使用道具 举报
加油好好学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马