黑马程序员技术交流社区
标题:
哪里出了问题
[打印本页]
作者:
木华
时间:
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
我给你修改的,
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);
}
}
复制代码
作者:
心?=忐§忑]
时间:
2014-5-24 11:22
//这是我的见解,期待讨论
class Str
{
public static void main(String[] args)
{
byte[] arr= {1,2,3,5,4};
try
{
cha(arr,(byte)'4');
}catch(IllegalArgumentException e){
System.out.println(e.toString());
}
}
//下边返回类型改成int 接受参数就出一次了
public static int cha(byte[] arr,byte a)
//你传过来的值之间没关系,在程序中也没关系啊
{
for(int x=0;x<arr.length;x++)
{
if(arr.length==1)
{
throw new IllegalArgumentException();//异常也抛不了
}
if(arr[x]==a) //数组中是传递过来的内容,和a中接受的没关系,地址也不会相同
{
System.out.println(x);
break;
}
if(x+1==arr.length && arr[x]!=a)
{
return (-1);//不能返回-1
}
System.out.print((byte)arr[x]) ;
}
return(-1);
}
}
/*运行结果:1235
* 根据运行结果可以看出,程序运行了。
*/
复制代码
作者:
yinxjfly
时间:
2014-5-25 01:07
楼主,能解释一下这个程序是什么作用嘛?
看着好晕!!
作者:
w440149517
时间:
2014-5-25 09:14
看不懂呀
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2