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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Solarln 中级黑马   /  2016-7-31 12:33  /  1645 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

.分析以下需求,并用代码实现:
        (1)键盘录入6个int类型的数据存数数组arr中
        (2)将arr数组中的内容反转
        (3)将翻转后的数组角标为奇数的互相交换 1和3换, 3和5换,以此类推
     搞得我脑袋瓜子都炸了  没基础果然是累

11 个回复

倒序浏览
这个不是很难啊,
思路:1、先定义一个长度为6的整形数组,再用循环从键盘录入六个整数,并把每次输入的整数存放在数组中
         2、利用for循环将数组反转,
         3、再利用for循环将角标为奇数的数互换
回复 使用道具 举报
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;
                        }
                }
        }
}
这是我的实现,看得懂么
回复 使用道具 举报
qq632739657 发表于 2016-7-31 14:23
import java.util.Scanner;
class Test3 {
        public static void main(String[] args) {

写的很好!
回复 使用道具 举报
我们老师写的,你可以参考一下
[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[i] = 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[i];
		arr[i] = 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[i] + " ");
		}
	}
}
回复 使用道具 举报
重新发一下,语法选错了...
[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[i] = 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[i];
		arr[i] = 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[i] + " ");
		}
	}
}


回复 使用道具 举报
我也不知道为什么语法会被注释掉,醉了....
回复 使用道具 举报
都是大神啊
回复 使用道具 举报
学习了,写的不错。
回复 使用道具 举报
qq632739657 发表于 2016-7-31 14:23
import java.util.Scanner;
class Test3 {
        public static void main(String[] args) {

按你发的那个思路看,学会了.
回复 使用道具 举报
Solarln 发表于 2016-7-31 22:16
按你发的那个思路看,学会了.

弄懂了就行,共同学习进步吧,建议你带着思路去敲代码。
回复 使用道具 举报
厉害了word哥
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马