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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐学松 黑马帝   /  2012-4-24 09:55  /  2524 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

编译成功,但是没有结果显示

以下是代码,求解释,求指教,求大神
class haed
{
        public static void main(String[] args)
        {
                int [] se={5,7,1,4,8,9,4,3,2};
               
                chuli(se);
                bianli(se);
                }
        public static void chuli(int[] arr)
        {
                for ( int x=0; x<arr.length; x++)
                       
                {
                        for (int y=0;y<arr.length ;y++ )
                        {
                                if (arr[x]<arr[y])
                                {
                                        int temp=arr[x];
                                        arr[x]=arr[y];
                                        arr[y]=arr[x];
                                }

                        }

                }
        }
        public static void bianli(int[] arr)
        {
                for (int i=arr[0];i<arr.length ;i++ )
                {
                        System.out.print(arr[i]);
                }
        }
}

10 个回复

正序浏览

,

本帖最后由 韩新凯 于 2012-4-24 12:27 编辑

            1.                   {
                                        int temp=arr[x];
                                        arr[x]=arr[y];  //请看这两行???这是怎么回事?
                                        arr[y]=arr[x];//???arr[y] = temp;
                                }
2.   public static void bianli(int[] arr)
        {
                for (int i=arr[0];i<arr.length ;i++ )      //为什么不从第一个数开始输出?如果是从大到小输出的话,你什么都遍历不出来。
                                                                          //for(int i=0;i<arr.length;i++)
                {
                        System.out.print(arr);
                }
        }
3,给你看看我的学习笔记吧
public class ArrayTool{
/**
  * 空参数构造数组。
  */
private ArrayTool() {
  // TODO Auto-generated constructor stub
}
/**
  * 获取一个整型数组中的最大值。
  * @param arr接收一个int类型的数组。
  * @return会返回一个该数组中的最大值。
  */
public static int getMax(int[] arr){
  int max = 0;
  for(int x=1;x<arr.length;x++){
   if(arr[x]>arr[max]){
    max = x;
   }
  }
  return arr[max];
}
/**
  * 获取一个整型数组中的最小值。
  * @param arr接收一个int类型的数组。
  * @return会返回一个该数组中的最小值。
  */
public static int getMin(int[] arr){
  int min = 0;
  for(int x=1;x<arr.length;x++){
   if(arr[x]<arr[min]){
    min = x;
   }
  }
  return arr[min];
}
/**
  * 给int数组进行选择排序。
  * @param arr接收一个int型的数组。
  */
public static void selectSort(int[] arr){
  for(int x=0;x<arr.length-1;x++){
   for(int y=x+1;y<arr.length;y++){
    if(arr[x]>arr[y]){
     swap(arr,x,y);
    }
   }
   
  }
}
/**
  * 给int数组进行冒泡排序。
  * @param arr接收一个int型的数组。
  */
public static void bubbleSort(int[] arr){
  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])
     swap(arr,y,y+1);
   }
  }
}
/**
  * 给数组中的元素进行位置的置换。
  * @param arr接收一个int型的数组。
  * @param a要置换的位置
  * @param b要置换的位置
  */
private static void swap(int[] arr,int a,int b){
  int temp = arr[a];
  arr[a] = arr;
  arr = temp;
}
/**
  * 用于打印数组中的元素。打印形式是:[element1,element2,...]
  * @param arr
  */
public static void printArray(int[] arr){
  System.out.print("[");
  for(int x=0;x<arr.length;x++){
   if(x != arr.length-1)
    System.out.print(arr[x]+",");
   else
    System.out.println(arr[x]+"]");
  }
}
}

回复 使用道具 举报
黑马张平 发表于 2012-4-24 10:05
int temp=arr[x];
arr[x]=arr[y];
arr[y]=arr[x];

非常感谢
回复 使用道具 举报
唐学松 黑马帝 2012-4-24 10:26:04
9#
施俊 发表于 2012-4-24 10:11
另外你处理那个方法里是要干嘛呀?没看懂啊,感觉你是在排序吧?
for ( int x=0; x ...

恩,这是排序输出
回复 使用道具 举报
唐学松 黑马帝 2012-4-24 10:25:29
8#
施俊 发表于 2012-4-24 10:08
for (int i=arr[0];i

非常感谢指出我的问题,
定义是错了,谢谢
回复 使用道具 举报
  1. class haed//注意java类名的规范,首字母大写
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int [] se={5,7,1,4,8,9,4,3,2};
  6.                 chuli(se);
  7.                 bianli(se);
  8.         }
  9.         public static void chuli(int[] arr)
  10.         {
  11.                 for ( int x=0; x<【arr.length-1】 x++)//两两比较的话,数组的最后一个元素不用在比较了,所以只需要遍历到length-2               
  12.                 {
  13.                         for (int y=【x+1】;y<arr.length ;y++ )
  14.                         {
  15.                                         if (arr[x]<arr[y])//当x=0,y=0时,自己还需要跟自己比较吗?
  16.                                         {
  17.                                                         int temp=arr[x];
  18.                                                         arr[x]=arr[y];
  19.                                                         arr[y]=arr[x];//两数换位,arr[x]已经等于arr[y]了
  20.                                                         //所以你再将arr[x]赋值给arr[y]的话相当于还是把arr[y]赋值给arr[y]
  21.                                                         //但是你的temp记录了arr[x]的值,所以直接将temp赋值给arr[y]就完成换位
  22.                                         }
  23.                         }

  24.                 }
  25.         }
  26.         public static void bianli(int[] arr)
  27.         {
  28.                 for (int i=arr[0];i<arr.length ;i++ )//遍历数组时候,由于数组的角标有有序的,所以一般遍历角标
  29.                 //for (int i=0;i<arr.lengrh;i++)
  30.                 {
  31.                                 System.out.print(arr[i]);
  32.                 }
  33.         }
  34. }
复制代码
回复 使用道具 举报
另外你处理那个方法里是要干嘛呀?没看懂啊,感觉你是在排序吧?
for ( int x=0; x<arr.length; x++)
                        
                {
                        for (int y=0;y<arr.length ;y++ )
                        {
                                if (arr[x]<arr[y])
                                {
                                        int temp=arr[x];
                                        arr[x]=arr[y];
                                        arr[y]=arr[x];
                                }

                        }

                }
这段代码问题严重啊,先不管重复比较的问题,你在交换变量值的时候就有马虎了。导致结果一定都是一个数,而且是9。
回复 使用道具 举报
class Hade//你的类名不应该小写
{
        public static void main(String[] args)
        {
                int [] se={5,7,1,4,8,9,4,3,2};
               
                chuli(se);
                bianli(se);
                }
        public static void chuli(int[] arr)
        {
                for ( int x=0; x<arr.length; x++)
                        
                {
                        for (int y=0;y<arr.length ;y++ )
                        {
                                if (arr[x]<arr[y])
                                {
                                        int temp=arr[x];
                                        arr[x]=arr[y];
                                        arr[y]=temp;//这个地方出错啦!
                                }

                        }

                }
        }
        public static void bianli(int[] arr)
        {
                for (int i=arr[0];i<arr.length ;i++ )
                {
                        System.out.print(arr[i]);
                }
        }
}
回复 使用道具 举报
for (int i=arr[0];i<arr.length ;i++ )
                {
                        System.out.print(arr[i]);
                }
你定义的是i=arr[0],而打印arr[i]。那么要么是你定义错了,要么是你打印错了,我觉得是你定义错了,改为int i = 0;
回复 使用道具 举报
int temp=arr[x];
arr[x]=arr[y];
arr[y]=arr[x];
这里错了。
改成:arr[y]=temp;
回复 使用道具 举报
  1. public static void main(String[] args)
  2.     {
  3.             int [] se={5,7,1,4,8,9,4,3,2};
  4.             
  5.             chuli(se);
  6.             bianli(se);
  7.     }
  8.        
  9.     public static void chuli(int[] arr)
  10.     {                int temp;
  11.             for ( int x=1; x<arr.length; x++)
  12.                     
  13.            {
  14.                     for (int y=0;y<x ;y++ )
  15.                     {
  16.                             if (arr[x]<arr[y])
  17.                             {
  18.                                      temp=arr[x];
  19.                                     arr[x]=arr[y];
  20.                                     arr[y]=temp;
  21.                             }

  22.                    }

  23.            }
  24.     }



  25.     public static void bianli(int[] arr)
  26.     {
  27.             for (int i=0;i<arr.length ;i++ )
  28.             {
  29.                     System.out.print(arr[i]);
  30.             }
  31.     }改好了
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马