当前位置:编程学习 > JAVA >>

java java.lang.StringIndexOutOfBoundsException错误

代码如下: public class aaa { public static void main(String[] args) { // TODO Auto-generated method stub String collection="1."; String member=""; String temp=collection; int pointPosition=0; int i=1; while(temp!=null){ pointPosition=temp.indexOf("."); member=temp.substring(0,pointPosition); System.out.println("member"+i+"="+member); temp=temp.substring(pointPosition+1); System.out.println(temp); i++; } } }
补充:我想从一串字符串中读出我想要的数字,比如11.12.13.14.用点来区分,如果-1我就读不到正确的数字了啊
while(temp!=null){
			pointPosition=temp.indexOf(".");
			System.out.println(pointPosition);
			if(pointPosition>0){
				member=temp.substring(0,pointPosition);
			}else	break;
			System.out.println("member"+i+"="+member);
			temp=temp.substring(pointPosition+1);
			System.out.println(temp);
			i++;
		}
输出如下:
2
member1=14

-1                                         //这里temp应该为空了啊,为什么又循环进去了呢?
有追加谢谢了
弄好了,while判断再加一个temp.length()!=0就可以了,不需要用break,不过还是谢谢各位了,分数只能给一个,这也是没有办法的。多谢
追问:请解释下我这个为什么会越界可以吗?拿俩个数分析下,有追分,谢谢了
答案:member=temp.substring(0,pointPosition);
这段越界了

加上判断就行了

if(pointPosition>0)
	member=temp.substring(0,pointPosition);
else
	break;
其他:member=temp.substring(0,pointPosition);
这句话改成member=temp.substring(0,pointPosition-1); temp=temp.substring(pointPosition+1);
当然会超出边界吧 (max == null||max.length() pointPosition=temp.indexOf("."); //pointPosition=1 

上一个:想编一个java swing的窗口程序,总是不对……怎么办呀T_T(附代码)
下一个:用JavaScript实现动态表格时,如何把input的名字传给Java

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,