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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

不知道为什么,输入下面的代码,数组中的元素压根没有动,求指教!!!想了半天就是不知道到底什么原因不排序!!!
class Test
{
        public static void main(String[] args)
        {
                int[] a=new int[]{1,2,4,3};
                for(int i=0;i<a.length;i++)
                {
                        for(int j=i+1;j<a.length;j++)
                        {
                                compare(a[i],a[j]);
                        }
                }
                for(int i=0;i<a.length;i++)
                {
                        System.out.println("a["+i+"]="+a[i]);
                }
        }
        public static void compare(int a,int b)
        {
                if(a>b)
                {
                        a=a^b;
                        b=a^b;
                        a=a^b;
                }
        }
}

12 个回复

倒序浏览
看你还是不会使用和定义方法,下面是我自己写的,请参考:

public class Test{
        public static void main(String[] args){
                int[] arr ={1,2,4,3,29,74,55,33,5};
                Compare(arr);
        }

        public static void Compare(int[] arr){
                                               
                for(int i=0;i<arr.length;i++){
                        int temp = arr[i];
                                                       
                        for(int j=i+1;j<arr.length;j++){                               
                                if(arr[i]>arr[j]){
                                        temp = arr[j];
                                        arr[j]=arr[i];
                                        arr[i]=temp;
                                }
                        }
                        System.out.println(temp);
                }
        }
}

评分

参与人数 1黑马币 +1 收起 理由
噜噜吧 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你的compare方法中可以使用第三方变量来进行存储
回复 使用道具 举报
是参数问题吧
你的方法只是 形参的交换 没有影响到实参数组的内容
回复 使用道具 举报 1 0
你的问题是:基本类型形参的改变能影响实参么?想明白这个你就知道哪里错了。另外有小问题,一是格式,二是外层循环i<a.length-1
回复 使用道具 举报
水月灬清影 发表于 2016-9-10 20:36
你的问题是:基本类型形参的改变能影响实参么?想明白这个你就知道哪里错了。另外有小问题,一是格式,二是 ...

知道为什么了,谢谢指教!我的格式的话,个人还是比较喜欢对称的格式,这样也可以清晰的看出来哪里到哪里是一块,但是不知道以后工作了这样写可不可以,不可以的话得现在就改了.
回复 使用道具 举报
NewBeeCoder 发表于 2016-9-10 20:31
是参数问题吧
你的方法只是 形参的交换 没有影响到实参数组的内容
...

对的对的,问题就是处在这里,谢谢!
回复 使用道具 举报
基本数据类型中的形参是不会影响到实参的
回复 使用道具 举报 1 0
[size=18.018px]class Test
[size=18.018px]{
[size=18.018px]        public static void main(String[] args)
[size=18.018px]        { [size=18.018px]                int[] a = new int[] { 1, 2, 4, 3 };
                for (int i = 0; i < a.length; i++) {
                        for (int j = i + 1; j < a.length; j++) {
                                if (a > a[j]) {
                                        a = a ^ a[j];
                                        a[j] = a ^ a[j];
                                        a = a ^ a[j];
                                }
                        }
                }
                for (int i = 0; i < a.length; i++) {
                        System.out.println("a[" + i + "]=" + a);
                }
[size=18.018px]        }
[size=18.018px]}

回复 使用道具 举报
驰马定中原 发表于 2016-9-11 20:46
class Test
{
        public static void main(String[] args)

[size=18.018px]是什么意思?没看懂...
回复 使用道具 举报
学习学习
回复 使用道具 举报
Young66329 发表于 2016-9-11 14:34
对的对的,问题就是处在这里,谢谢!

没事 我也经常出这种问题
回复 使用道具 举报
加油加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马