黑马程序员技术交流社区

标题: 求大神解答 [打印本页]

作者: dengxuye    时间: 2016-3-30 22:50
标题: 求大神解答
输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组

作者: huangkai521    时间: 2016-3-30 23:14
本帖最后由 huangkai521 于 2016-3-31 21:50 编辑

public class ArrayTest {

        public static void main(String[] args) {
                int[] arr = {4,6,5,7,21,46,11};
                //交换前
                printArray(arr);
                System.out.println("=====================");
                //调用交换方法。
                exchangeArray(arr);
                //交换前
                printArray(arr);//交换后

        }
        //定义方法获取数组元素最小值的角标。
        public static int getMin(int[] arr){
                int min = 0;
                for(int i=1;i<arr.length;i++){
                        if(arr<arr[min])
                                min = i;
                }
                return min;
        }
        //定义方法获取数组元素最大值的角标。
        public static int getMax(int[] arr){
                int max = 0;
                for(int i=1;i<arr.length;i++){
                        if(arr>arr[max])
                                max = i;
                }
                return max;
        }
        //定义方法使最大的与第一个元素交换,最小的与最后一个元素交换。
        public static void exchangeArray(int[] arr){
                int max =getMax(arr);
                int temp1=arr[0];
                arr[0] = arr[max];
                arr[max]=temp1;
               
                int min =getMin(arr);
                int temp2=arr[arr.length-1];
                arr[arr.length-1] = arr[min];
                arr[min]=temp2;
        }
        //打印数组的方法。
        public static void printArray(int[] arr){
                String str = "[";
                for(int i=0;i<arr.length;i++){
                        if(i==arr.length-1){
                                str+=arr+"]";
                        }
                        else str+=arr+",";
                }
                System.out.println(str);
        }

作者: fengxiaocan    时间: 2016-3-30 23:31
class Demo_Array {
        public static void main(String[] args) {
                int[] arr = {12,32,44,5,31,17,38};                        //定义数组
                print(arr);
                swap(arr);
                print(arr);
        }
        //得到数组最大值的方法
        public static int getMax(int[] arr){
                int max = arr[0];                                                        //设定最大值是数组第一个元素
                for (int i = 1;i < arr.length ;i++ ) {                //循环遍历
                        if (max < arr[i]) {                                                //假如数组中有比max大的值
                                max = arr[i];                                                //把这个值赋值给max
                        }
                }
                return max;                                                                        //返回最大值
        }
        //得到数组最小值的方法
        public static int getMin(int[] arr){
                int min = arr[0];                                                //设定最小值是数组第一个元素
                for (int i = 1;i < arr.length ;i++ ) {        //循环遍历
                        if (min > arr[i]) {                                        //假如数组中有比min小的值
                                min = arr[i];                                        //把这个值赋值给min
                        }
                }
                return min;                                                                //返回最小值
        }
        //交换值的方法,直接把最大值交换给第一个元素,把最小值交换给最后一个元素
        public static void swap(int[] arr){
                int max = getMax(arr);                        //方法中调用别的方法获取数组最大值
                int min = getMin(arr);                        //获取最小值
                for (int i = 0;i < arr.length ;i++ ) {
                        if (max == arr[i]) {                //找到最大值对应的数组元素,与第一个元素交换
                                int temp = arr[i];
                                arr[i] = arr[0];
                                arr[0] = temp;
                        }
                        if (min == arr[i]) {                //找到最小值对应的数组元素,与最后一个元素交换
                                int temp = arr[i];
                                arr[i] = arr[arr.length - 1];
                                arr[arr.length - 1] = temp;
                        }
                }
        }
        //遍历数组的方法
        public static void print(int[] arr){
                for (int i = 0; i < arr.length ;i++ ) {
                        System.out.print(arr[i] + " ");
                }
                System.out.println();
        }
}





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