黑马程序员技术交流社区

标题: 哪里出了问题 [打印本页]

作者: 木华    时间: 2014-5-24 08:43
标题: 哪里出了问题
本帖最后由 木华 于 2014-5-26 20:01 编辑

class Str
    {
     public static void main(String[] args)
             {
                byte[] arr= {};
                try{cha(arr,(byte)'4');}
              catch(IllegalArgumentException e){  System.out.println(e.toString());     }
              }
            //下边返回类型改成int 接受参数就出一次了
        public static int cha(byte[] arr,byte a)   throws  IllegalArgumentException
            {
                for(int x=0;x<arr.length;x++)
                   {
                        if(arr.length==0)
                        {
                                throw new IllegalArgumentException();//异常也抛不了
                         }
                        if(arr[x]==a)
                         {
                                System.out.println(x);
                                break;
                          }
                        if(x+1==arr.length && arr[x]!=a)
                           {
                                
                               return (-1);//不能返回-1
                             }
                     
                        
                     }
            return(-1);
             }   
    }
   
为何没有运行结果
作者: gentleman    时间: 2014-5-24 08:58
本帖最后由 gentleman 于 2014-5-24 09:00 编辑

arr,length==0;所以for循环都没进去,跟不用说抛异常,返回值了,你看到返回的是外面那个return返回的-1
我给你修改的,

  1. class Str
  2.     {
  3.      public static void main(String[] args)
  4.              {
  5.                 byte[] arr= {};
  6.                 try{cha(arr,(byte)'4');}
  7.               catch(IllegalArgumentException e){  System.out.println(e.toString());     }
  8.               }
  9.             //下边返回类型改成int 接受参数就出一次了
  10.         public static int cha(byte[] arr,byte a)   throws  IllegalArgumentException
  11.             {
  12.                 for(int x=0;x<arr.length;x++)
  13.                    {
  14.                         if(arr.length==0)
  15.                         {
  16.                                 throw new IllegalArgumentException();//异常也抛不了
  17.                          }
  18.                         if(arr[x]==a)
  19.                          {
  20.                                 System.out.println(x);
  21.                                 break;
  22.                           }
  23.                         if(x+1==arr.length && arr[x]!=a)
  24.                            {
  25.                                 
  26.                                return (-1);//不能返回-1
  27.                              }
  28.                      
  29.                         
  30.                      }
  31.             return(-1);
  32.              }   
  33.     }
复制代码

作者: 心?=忐§忑]    时间: 2014-5-24 11:22

  1. //这是我的见解,期待讨论
  2. class Str
  3.      {
  4.       public static void main(String[] args)
  5.               {
  6.                  byte[] arr= {1,2,3,5,4};
  7.                  try
  8.                  {
  9.                          cha(arr,(byte)'4');
  10.                  }catch(IllegalArgumentException e){  
  11.                          System.out.println(e.toString());     
  12.                  }
  13.                }
  14.              //下边返回类型改成int 接受参数就出一次了
  15.         public static int cha(byte[] arr,byte a)
  16.         //你传过来的值之间没关系,在程序中也没关系啊
  17.              {
  18.                  for(int x=0;x<arr.length;x++)
  19.                     {
  20.                         if(arr.length==1)
  21.                          {
  22.                              throw new IllegalArgumentException();//异常也抛不了
  23.                          }
  24.                          if(arr[x]==a)  //数组中是传递过来的内容,和a中接受的没关系,地址也不会相同
  25.                           {
  26.                                  System.out.println(x);
  27.                              break;
  28.                            }
  29.                         if(x+1==arr.length && arr[x]!=a)
  30.                             {
  31.                                 return (-1);//不能返回-1
  32.                             }
  33.                         System.out.print((byte)arr[x]) ;
  34.                       }
  35.              return(-1);
  36.             }   
  37. }
  38. /*运行结果:1235
  39. * 根据运行结果可以看出,程序运行了。
  40. */
复制代码

作者: yinxjfly    时间: 2014-5-25 01:07
楼主,能解释一下这个程序是什么作用嘛?
看着好晕!!
作者: w440149517    时间: 2014-5-25 09:14
看不懂呀




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