黑马程序员技术交流社区

标题: 这个冒泡哪里有问题? [打印本页]

作者: 我只追求完美    时间: 2015-3-8 23:29
标题: 这个冒泡哪里有问题?
public class Demo {

       
        public static void main(String[] args) {
               
               
                int[] arr={3,54,1,25,41,9};
               
               
               
                 for(int x=0;x<arr.length-1;x++)
                        {
                                for(int y=0;y<arr.length-x-1;y++)
                                {
                                        if(arr[y]>arr[y+1])
                                        {
                                                int temp=arr[y];
                                                arr[y]=arr[y+1];
                                                arr[y+1]=temp;
                                        }
                                }

                        }
                 System.out.print(arr);
}
}
运行结果不对啊!


作者: aawenwei    时间: 2015-3-9 00:05
System.out.print(arr); 你这个输出的结果是arr数组的引用地址把、  用一个for循环输出数组的元素  for(int i=0;i<arr.length;i++){
                  System.out.print(arr[i]+" ");

                  }  这样就行了 你试试把  
作者: DuckOne    时间: 2015-3-9 00:53
输出语句不对
作者: jiangwenjun    时间: 2015-3-9 06:49
  1. package com.itheima;
  2. public class Testq
  3. {
  4.         public static void Bianli(int[] arr)
  5.         {
  6.                 System.out.print("[");
  7.                 for(int q=0;q<arr.length;q++)
  8.                 {
  9.                         if(q<arr.length-1)
  10.                         {
  11.                                 System.out.print(arr[q]+",");
  12.                         }
  13.                         else
  14.                         {
  15.                                 System.out.print(arr[q]);
  16.                         }
  17.                 }
  18.                 System.out.println("]");
  19.         }
  20.         public static void Paixu(int[] arr)
  21.         {
  22.         for(int x=0;x<arr.length-1;x++)
  23.         {
  24.                 for(int y=0;y<arr.length-1-x;y++)
  25.                 {
  26.                         if(arr[y]>arr[y+1])
  27.                         {
  28.                                 Zhihuan(arr,y,y+1);
  29.                         }
  30.                 }
  31.         }
  32.         }
  33.         public static void Zhihuan(int[] arr,int x,int y)
  34.         {
  35.                 arr[x]=arr[x]^arr[y];
  36.                 arr[y]=arr[x]^arr[y];
  37.                 arr[x]=arr[x]^arr[y];
  38.         }
  39.     public static void main(String[] args)
  40.     {
  41.             int[] arr={3,54,1,25,41,9};
  42.         Bianli(arr);
  43.         Paixu(arr);
  44.         Bianli(arr);
  45.             
  46.                    
  47.     }
  48. }
复制代码

作者: gaopeng868988    时间: 2015-3-9 08:44
你输出的不对是角标把
作者: wenke    时间: 2015-3-9 09:38
回去好好看看毕老师关于数组的基础视频 里面对你这个问题有详细的说明 输出语句打印出数组元素要么你自己封装一个类实现 要么调用Arrays类中的toString()方法接收一个数组进去实现打印  直接在System.out.println(arr)中传入数组的引用 其实是System.out.println(arr.toString())。调用了上帝Object类中的toString()方法 打印的是
getClass().getName() + '@' + Integer.toHexString(hashCode())  简单点说你那个输出语句打印的是类名@(Hexidecimal)hashCode值   试试通过System.out.println(Arrays.toString(要打印的数组引用))试试 别忘了导入Arrays类
作者: 杨强彪    时间: 2015-3-9 09:54
package Day1;

public class demo2 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                 int[] arr={3,54,1,25,41,9};
         
         
         
         for(int x=0;x<arr.length-1;x++)
                {
                        for(int y=0;y<arr.length-x-1;y++)
                        {
                                if(arr[y]>arr[y+1])
                                {
                                        int temp=arr[y];
                                        arr[y]=arr[y+1];
                                        arr[y+1]=temp;
                                }
                        }

                }
         for (int i = 0; i < arr.length; i++) {           //注意你没遍历输出
                        System.out.print(arr[i] + "  ");              //就是这儿出问题了
                }


        }

}

作者: 复仇的撒旦    时间: 2015-3-9 10:03
输出打印的应该是数组,先定义遍历数组的类,然后创建一个对象调用类中遍历数组的方法
  1.          class DaTunArr
  2. {
  3.         public static void DaYin(int[] arr)
  4.         {
  5.                 System.out.print("[");
  6.                 for(int a=0;a<arr.length;a++)
  7.                 {
  8.                         if(a<arr.length-1)
  9.                         {
  10.                                 System.out.print(arr[a]+",");
  11.                         }
  12.                         else
  13.                         {
  14.                                 System.out.print(arr[a]);
  15.                         }
  16.                 }
  17.                 System.out.println("]");
  18.         }
  19. }
  20. System.out.println(newDaTunArr.DaYin(arr));
复制代码

作者: zgjswp    时间: 2015-3-9 22:41
输出结果不对啊
作者: 突然世界晴    时间: 2015-3-10 13:27
    System.out.print(arr);
这一句错了, arr是字符数组,想要输出里面的类容需要用for循环
for(int i=0;i<arr.length;i++)
{
    System.out.print(arr[i]);
}
作者: Catface    时间: 2015-3-10 13:57
[quote]class Demo {

        
        public static void main(String[] args) {
               
               
                int[] arr={3,54,1,25,41,9};
               
               
               
                 for(int x=0;x<arr.length-1;x++)
                        {
                                for(int y=0;y<arr.length-x-1;y++)
                                {
                                        if(arr[y]>arr[y+1])
                                        {
                                                int temp=arr[y];
                                                arr[y]=arr[y+1];
                                                arr[y+1]=temp;
                                        }
                                }

                        }
                 printArray(arr);//System.out.print(arr);你这个是输出数组在内存的位置。

作者: Catface    时间: 2015-3-10 14:00
class Demo {

        
        public static void main(String[] args) {
               
               
                int[] arr={3,54,1,25,41,9};
               
               
               
                 for(int x=0;x<arr.length-1;x++)
                        {
                                for(int y=0;y<arr.length-x-1;y++)
                                {
                                        if(arr[y]>arr[y+1])
                                        {
                                                int temp=arr[y];
                                                arr[y]=arr[y+1];
                                                arr[y+1]=temp;
                                        }
                                }

                        }
                 printArray(arr);//System.out.print(arr);你这个是输出数组在内存的位置。
                                 //解决办法:自己定义一个打印数组方法,把arr扔进去就OK。
                }
               
                public static void printArray(int[] arr){
                        System.out.print("[");
                        for(int i=0;i<arr.length;i++){
                                if(i!=arr.length-1)
                                        System.out.print(arr+",");
                                else
                                        System.out.print(arr+"]");
                        }
                }        //数组的打印
}



最后的输出方式不对。




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