黑马程序员技术交流社区

标题: 一个数组的问题 [打印本页]

作者: Solarln    时间: 2016-7-31 12:33
标题: 一个数组的问题
.分析以下需求,并用代码实现:
        (1)键盘录入6个int类型的数据存数数组arr中
        (2)将arr数组中的内容反转
        (3)将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推
     搞得我脑袋瓜子都炸了  没基础果然是累
作者: qq632739657    时间: 2016-7-31 14:16
这个不是很难啊,
思路:1、先定义一个长度为6的整形数组,再用循环从键盘录入六个整数,并把每次输入的整数存放在数组中
         2、利用for循环将数组反转,
         3、再利用for循环将角标为奇数的数互换

作者: qq632739657    时间: 2016-7-31 14:23
import java.util.Scanner;
class Test3 {
        public static void main(String[] args) {
                int[] arr = new int[6];
                Scanner sc = new Scanner(System.in);
                for (int i=0;i<6;i++ ){                                                //键盘录入整数并存放在数组中
                        int a = i+1;
                        System.out.println("请输入第"+ a + "个整数:");
                        arr[i]=sc.nextInt();
                }
                System.out.println("你所输入的数组为:");                //
                print(arr);                                                                                //调用打印数组函数打印你所输入的数组
                reversal(arr);                                                                        //调用数组内容反转函数
                oddIndexSwap(arr);                                                                //角标为奇数的互换
                System.out.println("整理后的数组为:");
                print(arr);                                                                                //打印整理后的数组
        }
        public static void print(int[] arr){                                //用for循环遍历数组来输出数组中的每个元素
                for (int i = 0;i<arr.length;i++){
                        System.out.print(arr[i]+" ");
                }
                System.out.println();
        }
        public static void reversal(int[] arr){                                //反转数组函数
                for (int i = 0;i < arr.length / 2;i++ ){        //将a[0]和a[6-1-0]互换,a[1]与a[6-1-1]互换,以此类推
                        int temp = arr[i];
                        arr[i] = arr[arr.length - 1 - i];                               
                        arr[arr.length - 1 - i] = temp;
                }
        }
        public static void oddIndexSwap(int[] arr){                //角标为奇数位互换
                for (int i = 3;i < arr.length ;i++ ){
                        if (i%2!=0){
                                int temp = arr[i];
                                arr[i] = arr[i-2];
                                arr[i-2] = temp;
                        }
                }
        }
}
这是我的实现,看得懂么
作者: 花陌相惜    时间: 2016-7-31 14:38
qq632739657 发表于 2016-7-31 14:23
import java.util.Scanner;
class Test3 {
        public static void main(String[] args) {

写的很好!
作者: xiaobokk    时间: 2016-7-31 16:06
我们老师写的,你可以参考一下
[AppleScript] 纯文本查看 复制代码
import java.util.Scanner;

class Test3_Array {
        /*
        分析以下需求,并用代码实现:(扩展)
        (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]

                6 5 4 3 2 1
                0 1 2 3 4 5

                6 3 4 5 2 1
                0 1 2 3 4 5

                6 3 4 1 2 5
                0 1 2 3 4 5
               
        */
        public static void main(String[] args) {
                int[] arr = getData();
                getResult(arr);
        }
        //(1)键盘录入6个int类型的数据存数数组arr中
        public static int[] getData(){
                int[] arr = new int[6];
                System.out.println("请输入6个整数:");
                Scanner sc = new Scanner(System.in);
                for(int i = 0; i < arr.length; i++){
                        // 获取用户输入的数据
                        int num = sc.nextInt();
                        arr = num;
                }

                return arr;
        }
        //(2)将arr数组中的内容反转
        public static void resArray(int[] arr){
                int startIndex = 0;                                        // 第一个索引位置
                int endIndex = arr.length - 1;                // 最后一个索引位置

                for( ; startIndex <= endIndex; startIndex++,endIndex--){
                        swap(arr,startIndex,endIndex);
                }
        }

        public static void swap(int[] arr, int i, int j){
                int temp = arr;
                arr = arr[j];
                arr[j] = temp;
        }
        //(3)将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推
        public static void changeArray(int[] arr){
                /*
                        int i , j;
                        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);
                }
        }
        //(4)最后将数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
        public static int getEndIndex(int[] arr){
                // 获取数组中最后一个角标为奇数的元素
                /*
                        1 2 3 4 5 6 7
                        0 1 2 3 4 5 6
                */
                int index = (arr.length - 1) % 2 == 0 ? arr.length - 2 : arr.length - 1;
                return index;
        }

        public static void getResult(int[] arr){
                resArray(arr);
                changeArray(arr);
                int index = getEndIndex(arr);
                swap(arr,1,index);
                for(int i = 0; i < arr.length; i++){
                        System.out.print(arr + " ");
                }
        }
}

作者: xiaobokk    时间: 2016-7-31 16:07
重新发一下,语法选错了...
[Java] 纯文本查看 复制代码
import java.util.Scanner;

class Test3_Array {
        /*
        分析以下需求,并用代码实现:(扩展)
        (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]

                6 5 4 3 2 1
                0 1 2 3 4 5

                6 3 4 5 2 1
                0 1 2 3 4 5

                6 3 4 1 2 5
                0 1 2 3 4 5
               
        */
        public static void main(String[] args) {
                int[] arr = getData();
                getResult(arr);
        }
        //(1)键盘录入6个int类型的数据存数数组arr中
        public static int[] getData(){
                int[] arr = new int[6];
                System.out.println("请输入6个整数:");
                Scanner sc = new Scanner(System.in);
                for(int i = 0; i < arr.length; i++){
                        // 获取用户输入的数据
                        int num = sc.nextInt();
                        arr = num;
                }

                return arr;
        }
        //(2)将arr数组中的内容反转
        public static void resArray(int[] arr){
                int startIndex = 0;                                        // 第一个索引位置
                int endIndex = arr.length - 1;                // 最后一个索引位置

                for( ; startIndex <= endIndex; startIndex++,endIndex--){
                        swap(arr,startIndex,endIndex);
                }
        }

        public static void swap(int[] arr, int i, int j){
                int temp = arr;
                arr = arr[j];
                arr[j] = temp;
        }
        //(3)将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推
        public static void changeArray(int[] arr){
                /*
                        int i , j;
                        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);
                }
        }
        //(4)最后将数组最后一个角标为奇数的元素 和数组中第一个角标为奇数的元素交换
        public static int getEndIndex(int[] arr){
                // 获取数组中最后一个角标为奇数的元素
                /*
                        1 2 3 4 5 6 7
                        0 1 2 3 4 5 6
                */
                int index = (arr.length - 1) % 2 == 0 ? arr.length - 2 : arr.length - 1;
                return index;
        }

        public static void getResult(int[] arr){
                resArray(arr);
                changeArray(arr);
                int index = getEndIndex(arr);
                swap(arr,1,index);
                for(int i = 0; i < arr.length; i++){
                        System.out.print(arr + " ");
                }
        }
}



作者: xiaobokk    时间: 2016-7-31 16:10
我也不知道为什么语法会被注释掉,醉了....
作者: zhangjiesss    时间: 2016-7-31 16:43
都是大神啊
作者: lynch123    时间: 2016-7-31 17:13
学习了,写的不错。
作者: Solarln    时间: 2016-7-31 22:16
qq632739657 发表于 2016-7-31 14:23
import java.util.Scanner;
class Test3 {
        public static void main(String[] args) {

按你发的那个思路看,学会了.
作者: qq632739657    时间: 2016-7-31 22:36
Solarln 发表于 2016-7-31 22:16
按你发的那个思路看,学会了.

弄懂了就行,共同学习进步吧,建议你带着思路去敲代码。
作者: 张弗睿    时间: 2016-10-19 18:13
厉害了word哥




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