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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 月下夜风 中级黑马   /  2016-7-2 22:58  /  881 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面是今天遇到的一题,写了代码,编译没问题,但是没预期结果,求学友们分析一波
分析以下需求,并用代码实现:
        (1)定义一个int类型的一维数组,内容为{6,2,9,15,1,5,20,7,18}
        (2)将数组最大元素与最后一位元素进行交换,最小元素与第一位元素进行交换,并打印数组
这是我写的代码:
  1. class ShuZu1 {
  2.         public static void main(String[] args) {
  3.                 int[] arr={6,2,9,15,1,5,20,7,18};
  4.                 int max=getMax(arr);//获取最大元素索引
  5.                 int min=getMin(arr);//获取最小元素索引
  6.                 jiaoHuan(arr[0],arr[min]);//第一位元素与最小元素交换
  7.                 jiaoHuan(arr[arr.length-1],arr[max]);//最后一位元素与最大元素交换
  8.                 print(arr);//遍历打印数组
  9.         }
  10.         public static void print(int[] arr) {
  11.                 for (int x=0;x<arr.length ;x++ ) {
  12.                         System.out.print(arr[x]+" ");
  13.                 }
  14.         }
  15.         public static void jiaoHuan(int a,int b) {
  16.                 int x=a;
  17.                 a=b;
  18.                 b=x;
  19.         }
  20.         public static int getMax(int[] arr) {
  21.                 int max=0;
  22.                 for (int x=1;x<arr.length ;x++ ) {
  23.                         if (arr[max]<arr[x]) {
  24.                                 max=x;
  25.                         }
  26.                 }
  27.                 return max;
  28.         }
  29.         public static int getMin(int[] arr) {
  30.                 int min=0;
  31.                 for (int x=1;x<arr.length ;x++ ) {
  32.                         if (arr[min]>arr[x]) {
  33.                                 min=x;
  34.                         }
  35.                 }
  36.                 return min;
  37.         }

  38. }
复制代码

哪里出问题了。。。。。急求

7 个回复

倒序浏览
  if (arr[max]<arr[x]) {  max=x;  }
这两句有问题的,你实际上return的是所有arr[0]<arr[x]的值里面的X,而且max会被最后一个arr[x]里面的x覆盖掉.
回复 使用道具 举报
你写的交换函数有问题,
  • public static void jiaoHuan(int a,int b) {
  •                 int x=a;
  •                 a=b;
  •                 b=x;
  •         }
  • 你这段代码一点用都没有   你应该把数组传进去   在交换
public static void jiaoHuan(int[] array,int a,intb){
      int temp=array[a];
        array[a]=array;
        array=temp;
}



这样写就能交换了
回复 使用道具 举报
xfbyxq 发表于 2016-7-3 01:01
你写的交换函数有问题,
  • public static void jiaoHuan(int a,int b) {

  • 可以,大兄弟
    回复 使用道具 举报

    是这样啊,没错,我返回的就是数组里最大值的角标,不过出的问题解决了,谢谢啦
    回复 使用道具 举报
    shuiwa 来自手机 中级黑马 2016-7-3 09:54:45
    地板
    交换出了问题,没有写出数组参数
    回复 使用道具 举报
    public static void main(String[] args) {
                    int[] arr = {6,2,9,15,1,5,20,7,18};
                    int[] arrs = new int[arr.length];
                    for (int i = 0; i < arr.length; i++) {
                            arrs[i] = arr[i];
                    }
                    Arrays.sort(arrs);
                    arr[0] = arrs[0];
                    arr[arr.length - 1] = arrs[arrs.length - 1];
                    for (int i : arr) {
                            System.out.print(i + ",");
                    }
            }
    回复 使用道具 举报
    顶!d=====( ̄▽ ̄*)
    回复 使用道具 举报
    您需要登录后才可以回帖 登录 | 加入黑马