Java运行报错:substring(Unknown Source)

时间:2024-10-11 18:45:45

1、问题:对于String类的方法substring(int arg)或者substring(int arg0, i荏鱿胫协nt arg1);有如下在运行时报错的代码:String msg =fromServer.readUTF();int m1 = msg.indexOf(":");String msgnew=newString(msg.substring(m1));//==>此行报错

2、分析:然而代码的错误,可能并不只在报错的那一行;可以看到int m1 = msg.indexOf(":");是有问题的,在运行时,如果msg中正好不含有“:”时,这行代码会返回-1,如此,代码msg.substring(m1)越界,即在运行时抛出字符串下表越界的异常。

3、解决:在不确定时,先做判断,判断msg中是否含有“:”,然后使用substring(int arg0)。String msg =fromServer.readUTF();intm1 = 0;String msgnew=newString();if(msg.contains(":")){ m1 = msg.indexOf(":"); msgnew =newString(msg.substring(m1));}

© 手抄报圈