黑马程序员技术交流社区

标题: Java基础练习之模拟密码加密 附代码 [打印本页]

作者: 675355835    时间: 2015-9-17 11:36
标题: Java基础练习之模拟密码加密 附代码
/**
* 需求 :  模拟密码加密  
        键盘录入6个数的int类型的密码
        存入数组中 然后反转,//数组的反转
        反转后的数组 角标为奇数的互相换 1 和3换  3和 5换 以此类推
        然后数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
        打印出来 就欧了 密码是[1,2,3,4,5,6]的话 答案是[6, 5, 4, 1, 2, 3]
*/




public class SecretTest {
        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);
        }
       
}       
作者: ZZBY    时间: 2015-9-17 11:38
写的不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2