我是个JAVA的初学者,这是我写的一个关键字搜索的程序,
import java.lang.String;
public class CompareString {
public String Keyword;//关键字
public String Text;//所要搜索的文本
public CompareString(String Keyword,String Text){
this.Keyword=Keyword;
this.Text=Text;
}
public void Compare(){
int i=0;//循环变量
int sum=0;//计数器
String FirstPartKeyword=Keyword.substring(0,1);//用substring()方法截取字符串
String PartOfText=Text.substring(i,i+1);//同上
for( i=0;i<Keyword.length();i++){
if(FirstPartKeyword.equals(FirstPartKeyword)){
String str=Text.substring(i,i+Keyword.length());//此处出现数组下标越界的异常
if(str.equals(Keyword)){
sum=sum+1;//如果if 语句为真,则计数一次
}
}//while结束
}//for结束
if(sum>0){
System.out.println("有此内容");
System.out.println("共出现"+sum+"次");
}
else{System.out.println("无此内容");
}
} public static void main(String[] args) {
CompareString q=new CompareString("1234567890","123");
q.Compare();
}}
经过调试,总是显示数组下标越界,我实在找不出解决的办法,怎样才能解决此问题,希望各位在此指点,小弟在此谢过!!!
import java.lang.String;
public class CompareString {
public String Keyword;//关键字
public String Text;//所要搜索的文本
public CompareString(String Keyword,String Text){
this.Keyword=Keyword;
this.Text=Text;
}
public void Compare(){
int i=0;//循环变量
int sum=0;//计数器
String FirstPartKeyword=Keyword.substring(0,1);//用substring()方法截取字符串
String PartOfText=Text.substring(i,i+1);//同上
for( i=0;i<Keyword.length();i++){
if(FirstPartKeyword.equals(FirstPartKeyword)){
String str=Text.substring(i,i+Keyword.length());//此处出现数组下标越界的异常
if(str.equals(Keyword)){
sum=sum+1;//如果if 语句为真,则计数一次
}
}//while结束
}//for结束
if(sum>0){
System.out.println("有此内容");
System.out.println("共出现"+sum+"次");
}
else{System.out.println("无此内容");
}
} public static void main(String[] args) {
CompareString q=new CompareString("1234567890","123");
q.Compare();
}}
经过调试,总是显示数组下标越界,我实在找不出解决的办法,怎样才能解决此问题,希望各位在此指点,小弟在此谢过!!!
解决方案 »
- Java的位运算
- IO流资源释放问题
- FutureTask怎么使用
- 高手一旦写出代码解决,200分及时全给-------数据库表与IO流的交互的问题.
- 扯淡的 "垃圾回收机制"!我是个做java的。
- 关于java客户/服务器Socket通信循环的问题。
- 我找不到这个程序的错误,请帮忙,谢谢。
- 请问怎么使父窗口处于不可编辑装状态啊?
- 请教高手,关于java程序内存分配的问题。
- 海康SDK二次开发问题
- jface question thanks for some one who can give some solution to my issue thanks angain...
- JinternalFrame如何改变子窗体的最大最小化按钮??
截取的长度 比 Text 都长
public class CompareString {
public String Keyword;//关键字
public String Text;//所要搜索的文本
public CompareString(String Keyword,String Text){
this.Keyword=Keyword;
this.Text=Text;
}
public void Compare(){
int i=0;//循环变量
int sum=0;//计数器
String FirstPartKeyword=Keyword.substring(0,1);//用substring()方法截取字符串
String PartOfText=Text.substring(i,i+1);//同上
for(i=0;i <=Text.length()-Keyword.length();i++){
if(FirstPartKeyword.equals(FirstPartKeyword)){
String str=Text.substring(i,i+Keyword.length());//此处出现数组下标越界的异常
if(str.equals(Keyword)){
sum=sum+1;//如果if 语句为真,则计数一次
}
}//while结束
}//for结束
if(sum> 0){
System.out.println("有此内容");
System.out.println("共出现"+sum+"次");
}else{
System.out.println("无此内容");
} } public static void main(String[] args) {
CompareString q=new CompareString("123","12312123");
q.Compare();
} }
"Keyword.length()"= 10
你的test就3个数
那是不可能的啊
你想想从123里取0到10的位置的数怎么不能不报异常啊
import java.lang.String;
public class CompareString {
public String Keyword;//关键字
public String Text;//所要搜索的文本
public CompareString(String Keyword,String Text){
this.Keyword=Keyword;
this.Text=Text;
}
public void Compare(){
int i=0;//循环变量
int sum=0;//计数器
String FirstPartKeyword=Keyword.substring(0,1);//用substring()方法截取字符串
String PartOfText=Text.substring(i,i+1);//同上
for( i=0;i <Keyword.length();i++){
if(FirstPartKeyword.equals(FirstPartKeyword)){
String str=Text.substring(i,i+Keyword.length());//此处出现数组下标越界的异常
if(str.equals(Keyword)){
sum=sum+1;//如果if 语句为真,则计数一次
}
}//while结束
}//for结束
if(sum> 0){
System.out.println("有此内容");
System.out.println("共出现"+sum+"次");
}
else{System.out.println("无此内容");
} } public static void main(String[] args) {
CompareString q=new CompareString("1234567890","123");
q.Compare();
} }