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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈永波 初级黑马   /  2012-6-23 14:02  /  1599 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈永波 于 2012-6-23 14:28 编辑

题目是将一个数组中素有元素反转、
public class Test{
  public static void main(String[] args) {
      int[] arr = {1,2,3,4,5,6,7,8}
        reverse(arr);
  }
  public static void reverse(int[] arr){
         int temp;
         for(int i = 0; i < arr.length; i++){
         temp = arr;
         arr = arr[arr.length-1-i];
         arr[arr.length-1-i] = temp;
         System.out.println(arr);
        }
  }
}
输出结果是87655678.求解答。
正确结果应该是 87654321

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 新手,加油!

查看全部评分

8 个回复

倒序浏览
首先,反转数组,你应该返回一个数组,不是在函数内部做输出。
其次,分析你的程序,i = 0 a[] = {8,2,3,4,5,6,7,1} 输出a[0] = 8
                              i= 1 a[] = {8,7,3,4,5,6,2,1} 输出 a[1]=7
                               i= 2 a[] = {8,7,6,4,5,3,2,1}  输出a[2]=6
                              i= 3 a[] = {8,7,6,5,4,3,2,1}  输出a[3]=5
                             i= 4 a[] = {8,7,6,4,5,3,2,1}  输出a[4]=5
                             i= 5 a[] = {8,7,3,4,5,6,2,1}  输出a[5]=6
后面的我就不给你列出来了,自己分析吧,至于如何修改
你反转的时候遍历只需要到lengh/2即可,因为如果你都换了。那么数组里面的元素等于没换

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 恭喜啊!哥!11期有望了!

查看全部评分

回复 使用道具 举报
本帖最后由 王明明 于 2012-6-23 14:40 编辑

public class Testc{
  public static void main(String[] args) {
      int[] arr = {1,2,3,4,5,6,7,8};
        reverse(arr);
  }
  public static void reverse(int[] arr){
         int temp;
         for(int i = 0; i < arr.length/2; i++){ //这里 你看看你I的值交换后 I=4的时候 又开始把8 7 6 5换回去了 除2 就可以了
         temp = arr;
         arr = arr[arr.length-1-i];
         arr[arr.length-1-i] = temp;
               
        }
                for(int i = 0; i < arr.length; i++){
                        System.out.println(arr);
                }
  }
}

收尾同时都减一 也可以
public class Testc{
  public static void main(String[] args) {
      int[] arr = {1,2,3,4,5,6,7,8};
    reverse(arr);
  }
  public static void reverse(int[] arr){
         int temp;
         for(int i = 0,y=arr.length-1;i < y; i++,y--)
    {
         temp = arr;
         arr = arr[y];
         arr[y] = temp;        
        }
   for(int i = 0; i < arr.length; i++){
                        System.out.println(arr);
                }
             }
}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  1. public class Test{
  2.   public static void main(String[] args) {
  3.       int[] arr = {1,2,3,4,5,6,7,8};
  4.         reverse(arr);
  5.                 for (int i= 0 ;i<arr.length ;i++ )
  6.                 {
  7.                         if(i!=(arr.length-1))
  8.                                 System.out.print(arr[i]+",");
  9.                         else
  10.                                 System.out.println(arr[i]);
  11.                 }
  12.   }
  13.   public static void reverse(int[] arr){
  14.          int temp;
  15.          for(int i = 0; i < arr.length/2 ; i++){
  16.          temp = arr[i];
  17.          arr[i] = arr[arr.length-1-i];
  18.          arr[arr.length-1-i] = temp;
  19.         }
  20.   }
  21. }
  22. //按照你的思路,你不用全部遍历,遍历一半就可以了。
复制代码

评分

参与人数 1黑马币 +20 收起 理由
黄奕豪 + 20 哥们,你应该不需要分了哦,给点钱花可以了.

查看全部评分

回复 使用道具 举报


public class Text{
   public static void main(String[] args) {
       int[] arr = {1,2,3,4,5,6,7,8};
         reverse(arr);
   }
   public static void reverse(int[] arr){
          int temp;
          for(int i = 0; i < arr.length; i++){
          temp = arr[i];
          arr[i] = arr[arr.length-1-i];
          arr[arr.length-1-i] = temp;
         
         }
        for(int i = 0; i < arr.length; i++)
        {
                System.out.print(arr[i]);//输出在方法外
        }
  }
        
}
结果:12345678
回复 使用道具 举报
public class Test
{
  public static void main(String[] args)
  {
      int[] arr = {1,2,3,4,5,6,7,8}
        reverse(arr);
  }
  public static void reverse(int[] arr)
  {
         int temp;
         for(int start= 0,end=arr.length-1; start< end; start++,end--)
         {
         temp = arr[start];
         arr[start] = arr[end];
         arr[end] = temp;
         System.out.println(arr[i]);
        }
  }
}
回复 使用道具 举报
李伟 中级黑马 2012-6-23 14:36:09
7#
public class Test
{
  public static void main(String[] args)
  {
      int[] arr = {1,2,3,4,5,6,7,8}
        reverse(arr);
  }
  public static void reverse(int[] arr)
  {
         int temp;
         for(int start= 0,end=arr.length-1; start< end; start++,end--)//
         {
             temp = arr[start];
             arr[start] = arr[end];
             arr[end] = temp;
         }  
        System.out.println(arr);
  }
}
回复 使用道具 举报
  1. public class Test{
  2.   public static void main(String[] args)
  3.         {
  4.       int[] arr = {1,2,3,4,5,6,7,8};
  5.         reverse(arr);
  6.                 for(int i=0;i<arr.length;i++)//这里输出不能在for循环里面,因为在for循环里面只会输出4个值。
  7.                              System.out.println(arr[i]);
  8.         }
  9.   public static void reverse(int[] arr){
  10.          int temp;
  11.          for(int i = 0; i < arr.length/2; i++){//交换的时候只需要交换到一半就行了,如果这里写length,就会还原了
  12.          temp = arr[i];
  13.          arr[i] = arr[arr.length-1-i];
  14.          arr[arr.length-1-i] = temp;
  15.         }
  16.   }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 快了!!加油!

查看全部评分

回复 使用道具 举报
哥们,程序中有很多错误呢,我都怀疑你是怎么运行出结果的,帮你改了一下,看看你错在哪里:
public class Test {
        public static void main(String[] args) {
                int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
                reverse(arr);
        }

        public static void reverse(int[] arr) {
                int temp;
                for (int i = 0; i < arr.length / 2; i++) {
                        temp = arr[i];
                        arr[i] = arr[arr.length - 1 - i];
                        arr[arr.length - 1 - i] = temp;
                }
                for (int i : arr)
                        System.out.println(i);
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马