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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一道键盘录入翻转的题,哪位大神给个详细简单的办法
(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]

评分

参与人数 1黑马币 +14 收起 理由
数码店 + 14 赞一个!

查看全部评分

9 个回复

正序浏览
wby127889561 发表于 2016-6-12 08:43
看来你刚刚开始学啊,告诉你是有的,reverse方法就是反转,不过你前期学的话还是老老实实敲代码吧,会读代 ...

嗯,知道了,确实还是基础很重要
回复 使用道具 举报
66666666666666666
回复 使用道具 举报
看来你刚刚开始学啊,告诉你是有的,reverse方法就是反转,不过你前期学的话还是老老实实敲代码吧,会读代码很重要
回复 使用道具 举报
syinys7 发表于 2016-6-10 23:29
public class HomeWork_Test3 {
        public static void main(String[] args) {
                //1.通过键盘录入获取数组

当初老师讲的就是这总方法不过就是有点懵逼,不知到什么加密,右面翻转懂点
回复 使用道具 举报
L1ub0w3n 发表于 2016-6-10 23:14
API中有一个叫做reversePrint的方法可以直接使输入的字符串反转输出。可以直接调用。
还有一种方法就是楼上 ...

这简单,不过API还没有用,谢谢
回复 使用道具 举报
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);
        }
}
回复 使用道具 举报 1 0
API中有一个叫做reversePrint的方法可以直接使输入的字符串反转输出。可以直接调用。
还有一种方法就是楼上的。在遍历的时候从最后面开始往前遍历。因为数组或者字符串都是从0开始计数的。所以length长度-1就是最后一个字符。然后进行--操作。
回复 使用道具 举报
本帖最后由 18634319112 于 2016-6-10 22:56 编辑


for(int i=str.length()-1;i>-1;i--)
回复 使用道具 举报
赞赞赞赞赞赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马