黑马程序员技术交流社区

标题: 冒泡排序中出现的错误 [打印本页]

作者: ぺsimon☆    时间: 2013-4-11 15:42
标题: 冒泡排序中出现的错误
本帖最后由 ぺsimon☆ 于 2013-4-11 16:46 编辑

遇到问题了,请各位兄弟看看谢谢
代码:
/**
这是一个冒泡排序

思路
冒泡排序是前面的数跟后面的数相比,大的就放在后面,每个元素都依次的和后面的

数想比较,到最后数组就按照从小到大进行排序了

步骤:
1定义数组int[]:arr
2定义一个函数功能
返回值类型为void
未知内容是数组  参数类型是int[]
3定义临时变量temp  初始化值为数组第一个元素
4定义两个for循环
外循环次数是arr.length-1
内循环次数:arr.length-1
条件:如果前面的数大于后面的数,把他们的位置调换,否则位置不变
*/

class ArrayTree2
{
        public static void main(String[] args)
        {
        int[] arr={1,2,3,11,66,8,};
        //排序前打印
        printArray(arr);
        //排序
        array(arr);
        //排序后打印
        printArray(arr);
        public static void array(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])
        {
        int temp=arr[y];
        arr[y]=arr[y+1];
        arr[y+1]=temp;
        }
        }
        }
        }
        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.print(arr[x]+"]");
        }
        }
        }
        
}


错误:
E:\Java\jdk1.6.0_23\experience_heima\04>ja
ArrayTree2.java:30: 非法的表达式开始
        public static void array(int[] arr
        ^
ArrayTree2.java:30: 非法的表达式开始
        public static void array(int[] arr
               ^
ArrayTree2.java:30: 需要 ';'
        public static void array(int[] arr
                     ^
ArrayTree2.java:30: 需要 ".class"
        public static void array(int[] arr
                                       ^
ArrayTree2.java:30: 需要 ';'
        public static void array(int[] arr

ArrayTree2.java:46: 非法的表达式开始
        public static void printArray(int[
        ^
ArrayTree2.java:46: 非法的表达式开始
        public static void printArray(int[
               ^
ArrayTree2.java:46: 需要 ';'
        public static void printArray(int[
                     ^
ArrayTree2.java:46: 需要 ".class"
        public static void printArray(int[

ArrayTree2.java:46: 需要 ';'
        public static void printArray(int[

10 错误

E:\Java\jdk1.6.0_23\experience_heima\04>
作者: 李大伟    时间: 2013-4-11 16:01
本帖最后由 李大伟 于 2013-4-11 16:03 编辑

你参考参考我这个 代码 呵呵
  1. public class ArrayTest2 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 int[] arr=new int[]{7,1000,5,1,6,4,1,100005,8,9,355000};
  8.                 printArray(arr);
  9.                 bubbleSort(arr);
  10.                 printArray(arr);
  11.                
  12.                

  13.         }
  14.        
  15.         //冒泡排序
  16.         public static void bubbleSort(int[] arr){
  17.                
  18.                 for(int x=0; x<arr.length; x++){
  19.                         for(int y=0; y<arr.length-x-1;y++){//-x 为了减小比较次数, -1为了避免角标越界
  20.                                 if(arr[y]>arr[y+1]){
  21.                                         swap(arr,y,y+1);
  22.                                         //int temp =arr[y];
  23.                                         //arr[y]=arr[y+1];
  24.                                         //arr[y+1]=temp;
  25.                                 }
  26.                                
  27.                         }
  28.                 }
  29.         }
  30.        
  31.         //选择排序
  32.                 public static void  selectSort(int[] arr){
  33.                         for(int x=0; x<arr.length-1; x++){
  34.                                 for(int y=x+1;y<arr.length;y++){
  35.                                         if(arr[x]>arr[y]){
  36.                                                 swap(arr,x,y);
  37.                                                 //int temp = arr[x];
  38.                                                 //arr[x] = arr[y];
  39.                                                 //arr[y] = temp;
  40.                                                
  41.                                         }
  42.                                 }
  43.                         }
  44.                          
  45.                 }
  46.        
  47.        
  48.         public static void printArray(int[] arr){
  49.                
  50.                 System.out.print("arr=[");
  51.                 for(int x=0; x<arr.length;x++){
  52.                        
  53.                                 if(x!=arr.length-1)
  54.                                         System.out.print(arr[x]+", ");
  55.                                 else
  56.                                         System.out.println(arr[x]+"]");
  57.                                 }
  58.                
  59.         }
  60.        
  61.         public static void swap(int[] arr,int x,int y){
  62.                 int temp = arr[x];
  63.                  arr[x]= arr[y];
  64.                  arr[y]=temp;
  65.                
  66.         }

  67. }
复制代码

作者: 李大伟    时间: 2013-4-11 16:20
本帖最后由 李大伟 于 2013-4-11 16:24 编辑

我刚才运行了下 看了看  你就是把main函数的括号弄到下边去了,我已经给你标出来了,
你这个应该按标准格式,这样的话 清晰好找,另外的话 命名也要有规则,注意看老师视频里边的命名规则

下边是改完以后的代码
  1. class ArrayTree3
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.         int[] arr={1,2,3,11,66,8,};
  6.         //排序前打印
  7.         printArray(arr);
  8.         //排序
  9.         array(arr);
  10.         //排序后打印
  11.         printArray(arr);
  12.         } //错误1  main函数的括号问题
  13.         
  14.         
  15.         public static void array(int[] arr)
  16.         {
  17.         
  18.         for(int x=0;x<arr.length-1;x++)
  19.         {
  20.         for(int y=0;y<arr.length-x-1;y++)
  21.         {
  22.         if(arr[y]>arr[y+1])
  23.         {
  24.         int temp=arr[y];
  25.         arr[y]=arr[y+1];
  26.         arr[y+1]=temp;
  27.         }
  28.         }
  29.         }
  30.         }
  31.         public static void printArray(int[] arr)
  32.         {
  33.         System.out.print("[");
  34.         for(int x=0;x<arr.length;x++)
  35.         {
  36.         if(x!=arr.length-1)
  37.         System.out.print(arr[x]+", ");
  38.         else
  39.         System.out.print(arr[x]+"]");
  40.         }
  41.         }
  42.         //错误2 main函数的括号括到这里了,
  43. }
复制代码

作者: ぺsimon☆    时间: 2013-4-11 16:43
李大伟 发表于 2013-4-11 16:20
我刚才运行了下 看了看  你就是把main函数的括号弄到下边去了,我已经给你标出来了,
你这个应该按标准格式 ...

哦,刚刚试了一下,程序可以了,太感谢了我找了很久没看出什么问题呵呵




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