在一个字符串中计算出现过几次另一个字符串的几率,下面这个计算不出来:public class Array_list {
public static void main(String[] args){
String b="xyzxxyzzyxyzxxyyxyz";
char []s = b.toCharArray();
int count=0;
for(int i = 0;i<s.length;i++){
if(String.valueOf(s[i]).equals("xyz")){
count++;
}
}
System.out.println("The number of 'xyz'is: "+count);
}
}
public static void main(String[] args){
String b="xyzxxyzzyxyzxxyyxyz";
char []s = b.toCharArray();
int count=0;
for(int i = 0;i<s.length;i++){
if(String.valueOf(s[i]).equals("xyz")){
count++;
}
}
System.out.println("The number of 'xyz'is: "+count);
}
}
用这个和xyz比较 当然结果会是0
以下是我重写的方法
用容器储存字符串 可以得到结果import java.util.*;public class Array_list {
public static void main(String[] args) { String b = "xyzxxyzzyxyzxxyyxyz";
char[] s = b.toCharArray();
int count = 0;
List<String> c = new ArrayList<String>();
for(int j=0; j < (s.length-2); j++){
String str = null;
str = String.valueOf(s[j])+String.valueOf(s[j+1])+String.valueOf(s[j+2]);
c.add(str);
}
for(int i=0; i < c.size(); i++) {
System.out.println(c.get(i));
if (c.get(i).equals("xyz")) {
count++;
}
}
System.out.println("The number of 'xyz'is: " + count);
}
}
红色部分是范型 好像jdk老的版本不支持这样写 如果这句话出错的话把红色部分去掉也还是可以运行的
String b="xyzxxyzzyxyzxxyyxyz";
int count=0;
String queryString = "xyz";//需要查找的字符串
Pattern p = Pattern.compile(queryString);
Matcher m = p.matcher(b);
while (m.find()) {
count ++;
}
System.out.println(count);
}
int num=getNum("xyzxyzxyz","xyz");
System.out.println(num);
} //参数分别为需要分析的字符串和需要查找的字符串,返回查找到的个数
public static int getNum(String source,String find){
int i=find.length();
int num=0;
for(int n=0;n<=source.length()-i;n++){
if(source.substring(n, n+i).equals(find)){
num+=1;
}
}
return num;
}
}
if(String.valueOf(s[i]).equals("x")){
if(String.valueOf(s[i+1]).equals("y")){
if(String.valueOf(s[i+2]).equals("z")){
count++;
}
} }
按LZ的方法,改成三层循环就可以了吧
public class CountStr
{
public static void main(String[] args) {
String b="xyzxxyzzyxyzxxyyxyz";
int count=0;
String queryString = "xyz";//需要查找的字符串
Pattern p = Pattern.compile(queryString);
Matcher m = p.matcher(b);
while (m.find()) {
count ++;
}
System.out.println(count);
}
}
正则不常用,时间长就忘记了...
int fromIndex = 0;
int index = -1;
int count = 0;
String str = "xyzxxyzzyxyzxxyyxyz";
String queryString = "xyz";
System.out.print(queryString + "出现的位置是:");
while((index=str.indexOf(queryString, fromIndex)) != -1) {
fromIndex = index + queryString.length();
System.out.print(index + " ");
count ++;
}
System.out.println("\n出现的次数为:" + count);这是用indexOf来做的
楼主可以参考下