那位大虾帮我看看,我用Jcreat输入的程序可总是在第二个while处报非法表达的错误。不知道错在哪?    private static void quicksort(String[] a,int lo0,int hi0){
   int lo=lo0;
   int hi=hi0;
  
   if(lo>=hi)
   return;
  
   String mid=a[(lo+hi)/2];
   while(lo<hi){
  
          while(lo<hi&&a[lo].comparaTo(mid))<0){
    
           lo++;
           }
       while(lo<hi&&a[hi].comparaTo(mid))>0){
       
           hi--;}
      if(lo<hi){
      String T=a[lo];
      a[lo]=a[hi];
      a[hi]=T;
      lo++;
      hi--;
   }
  
   if(hi<lo){
   int T=hi;
   hi=lo;
   lo=T;
   }
   quicksort(a,lo0,lo);
   quicksort(a,lo==lo0?lo+1:lo,hi0);
  }
  }

解决方案 »

  1.   

    while(lo<hi&&a[lo].comparaTo(mid))<0){你不觉得多了个)
      

  2.   

    哇,好多分啊
    while(lo<hi&&a[lo].comparaTo(mid))<0){
    两处都多了个),而且方法名也写错了,应该是compareTo
      

  3.   

    while(lo<hi&&a[hi].comparaTo(mid))>0)//多了个括号
      

  4.   

    while(lo<hi&&a[lo].comparaTo(mid))<0)
                                            |--多了这个括号,a[lo].comparaTo(mid)<0 应该是这样
           while(lo<hi&&a[hi].comparaTo(mid))>0)
           这个也是这个问题还有..  comparaTo 应该为compareTo   难道你这个关键字不是在IDE里自动提示自动输入的吗?
      

  5.   

    一句话搞定:while(lo<hi&&a[hi].comparaTo(mid))>0){
    ------------->>>>>> while(lo<hi&&a[hi].compareTo(mid)>0){
      

  6.   

    private static void quicksort(String[] a,int lo0,int hi0){
      int lo=lo0;
      int hi=hi0;
      
      if(lo>=hi)
      return;
      
      String mid=a[(lo+hi)/2];
      while(lo<hi){
      
             while(lo<hi&&a[lo].compareTo(mid)<0){
        
              lo++;
              }
          while(lo<hi&&a[hi].compareTo(mid)>0){
          
              hi--;}
         if(lo<hi){
         String T=a[lo];
         a[lo]=a[hi];
         a[hi]=T;
         lo++;
         hi--;
      }
      
      if(hi<lo){
      int T=hi;
      hi=lo;
      lo=T;
      }
      quicksort(a,lo0,lo);
      quicksort(a,lo==lo0?lo+1:lo,hi0);
      }
      }
      

  7.   

    谢谢大家!你们谁用的的是Jcreator呀!刚来不知道怎么给分,呵呵!!新手请多多指教!!!谢谢!!!