我是编码的新手。如果有人可以帮助我:在此代码中寻找解决方案,如何计算在随机生成的字符串中可以找到“END”的次数。
谢谢你们!
public class Tombos {
public static void main (String[] args) throws FileNotFoundException {
PrintStream out1 = System.out;
PrintStream out2 = new PrintStream(new File("out.txt"));
String betuk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int i;
for (i=0; i<1000; i++) {
char random = betuk.charAt((int)(26*Math.random()));
out2.print(random);
}
Scanner beolvas = new Scanner(new File("out.txt"));
String x = beolvas.next();
if (x.contains("END")) {
out1.print( "tartalmaz"); // include "END"
} else {
out1.print( "nem tartlmaz"); // not include "END"
}
}
}
答案 0 :(得分:3)
您可以使用countMatches
类的StringUtils
方法。
int count = StringUtils.countMatches(x, "END");
它计算String在另一个字符串中出现的次数。 See documentation
答案 1 :(得分:2)
如果您是Apache Commons库的用户,StringUtils#countMatches
将完成这项工作。
int count = StringUtils.countMatches(x, "END");
如果没有,我可能会使用String#split
int count = x.split("END").length - 1;
它有点难看,但它很容易,而且它是单行的:)
答案 2 :(得分:0)
只需创建一个新的int变量,如int count = 0;
然后
if (x.contains("END)) {
count++;
}
每当你找到一个“END”增加你的变量,之后只需打印你的变量。
答案 3 :(得分:0)
这就是我要做的事情:
首先,创建一个新的int变量。我们称之为count
。
int count;
然后,在for循环的主体中,每次找到匹配的字符串时都会向count
添加一个字符串,如下所示:count = count + 1
。
程序看起来应该是这样的:
int i;
int count;
for (i=0;i<1000;i++) {
char random=betuk.charAt((int)(26*Math.random()));
out2.print(random);
}
Scanner beolvas=new Scanner(new File("out.txt"));
String x=beolvas.next();
if (x.contains("END")) {
out1.print( "tartalmaz"); // include "END"
count = count + 1; // add one to the count of matches
} else {
out1.print( "nem tartlmaz"); // not include "END"
}
答案 4 :(得分:0)
我不确定你对随机字符串和文件扫描程序的确切意图是什么,但是你所询问的字符串计数的基本方法是使用正则表达式(Pattern
class):
int endCount = 0;
Matcher matcher = Pattern.compile("END").matcher(x);
while (matcher.find()) {
endCount++;
}
请注意,如果您在循环中的某个位置执行此操作或反复调用该方法,那么最终会使Pattern.compile()
调用发生在仅调用一次的某个位置,从而产生更高效率存储Pattern
以供重复使用。
答案 5 :(得分:0)
这是一种算法方法:
String x = "ENDDOFJUESADNFENDEJFDNFDENDD"; // arbitrary String
boolean moreMatches = true;
int index = 0, count = 0;
while(moreMatches) {
if (x.indexOf("END", index) > -1)
{
index = x.indexOf("END", index) + 1;
count++;
} else {
moreMatches = false;
}
}
System.out.print(count); // prints 3
请阅读String.indexOf(String s, int fromIndex)的文档,了解我所做的事情。
每当我在字符串中找到单词"END"
时,我再次搜索,但这次从之后的位置搜索"END"
,我上次发现它。当我再也找不到它时,我就完成了循环。