黑马程序员技术交流社区

标题: 一道键盘录入反转的作业题,不是太会,有没有简单易懂的方法 [打印本页]

作者: TheLittlePrince    时间: 2016-6-10 22:27
标题: 一道键盘录入反转的作业题,不是太会,有没有简单易懂的方法
一道键盘录入翻转的题,哪位大神给个详细简单的办法
(1)键盘录入6个int类型的数据存数数组arr中
        (2)将arr数组中的内容反转
        (3)将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推
        (4)最后将数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
        (5)打印最终的数组(实现了1-4步之后的数组)
        (6)如:用户输入的6个int数字为[1,2,3,4,5,6],最后输出的结果为[6, 5, 4, 1, 2, 3]

作者: 数码店    时间: 2016-6-10 22:30
赞赞赞赞赞赞
作者: 18634319112    时间: 2016-6-10 22:46
本帖最后由 18634319112 于 2016-6-10 22:56 编辑


for(int i=str.length()-1;i>-1;i--)
作者: L1ub0w3n    时间: 2016-6-10 23:14
API中有一个叫做reversePrint的方法可以直接使输入的字符串反转输出。可以直接调用。
还有一种方法就是楼上的。在遍历的时候从最后面开始往前遍历。因为数组或者字符串都是从0开始计数的。所以length长度-1就是最后一个字符。然后进行--操作。
作者: syinys7    时间: 2016-6-10 23:29
public class HomeWork_Test3 {
        public static void main(String[] args) {
                //1.通过键盘录入获取数组
                int[] arr = getArrayByKeyBoard();
                //2.按照要求给数组加密
                getSecurityArray(arr);
                //3.打印数组内容
                print(arr);       
        }
        //1.通过键盘录入6个int类型的数字并存入数组中
        public static int[] getArrayByKeyBoard() {
                int[] arr = new int[6];
                Scanner sc = new Scanner(System.in);
                System.out.println("请依次输入6个整数:");
                for(int i=0;i<arr.length;i++) {
                        arr[i] = sc.nextInt();
                }
                return arr;
        }
        //2.数组反转
        public static void reverseArray(int[] arr) {
                int startIndex = 0;//最开始的索引
                int endIndex = arr.length-1;//最后的索引       
               
                for(;startIndex<=endIndex;startIndex++,endIndex--) {                       
                        swap(arr,startIndex,endIndex);
                }               
        }       
        //3.交换arr数组中角标为startIndex和endIndex的元素
        private static void swap(int[] arr, int startIndex, int endIndex) {
                int temp = arr[startIndex];
                arr[startIndex] = arr[endIndex];
                arr[endIndex] = temp;
        }
        //4.数组的反转 反转后的数组 角标为奇数的互相换 1 和3换 3和 5换以此类推
        public static void reverseArrayByIndex(int[] arr){
                //i=1,j=3;i=3,j=5;i=5,j=7
                for(int i=1,j=i+2;i<arr.length&&j<arr.length;i+=2,j+=2) {
                        swap(arr,i,j);
                }
               
        }
        //5.然后数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
        private static void swap(int[] arr){
                //数组中的最后一个为奇数的角标
                int lastIndex = (arr.length-1)%2==0?arr.length-2:arr.length-1;
                swap(arr,1,lastIndex);
        }
        //6.打印数组,如果长度为0,打印[],如果数组为null,打印null,否则打印格式如:[1, 2, 3, 4, 5, 6]
        public static void print(int[] arr){
                //如果数组为null,打印null
                if(arr==null) {
                        System.out.println("null");
                        return;
                }
                //如果长度为0,打印[]
                if(0==arr.length) {
                        System.out.println("[]");
                        return;
                }
                System.out.print("[");
                for(int i =0;i<arr.length;i++) {                               
                        System.out.print(arr[i]);
                        if(i!=arr.length-1)
                                System.out.print(", ");
                }
                System.out.println("]");
        }
        //7.直接获取加密后的数组
        public static void getSecurityArray(int[] arr) {
                //1.数组反转
                reverseArray(arr);
                //2.将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推
                reverseArrayByIndex(arr);
                //3.然后数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
                swap(arr);
        }
}
作者: TheLittlePrince    时间: 2016-6-11 23:07
L1ub0w3n 发表于 2016-6-10 23:14
API中有一个叫做reversePrint的方法可以直接使输入的字符串反转输出。可以直接调用。
还有一种方法就是楼上 ...

这简单,不过API还没有用,谢谢
作者: TheLittlePrince    时间: 2016-6-11 23:09
syinys7 发表于 2016-6-10 23:29
public class HomeWork_Test3 {
        public static void main(String[] args) {
                //1.通过键盘录入获取数组

当初老师讲的就是这总方法不过就是有点懵逼,不知到什么加密,右面翻转懂点
作者: wby127889561    时间: 2016-6-12 08:43
看来你刚刚开始学啊,告诉你是有的,reverse方法就是反转,不过你前期学的话还是老老实实敲代码吧,会读代码很重要
作者: haward2015    时间: 2016-6-12 09:18
66666666666666666
作者: TheLittlePrince    时间: 2016-6-12 12:10
wby127889561 发表于 2016-6-12 08:43
看来你刚刚开始学啊,告诉你是有的,reverse方法就是反转,不过你前期学的话还是老老实实敲代码吧,会读代 ...

嗯,知道了,确实还是基础很重要




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