Java 使用扫描仪计算字符串中的令牌发生率
我已经编写了这个方法countToken,它以扫描器s和字符串t作为参数,并返回int。它返回t作为标记出现在s中的时间数。这是我能做到的,对我来说这是有道理的,但它不工作的权利Java 使用扫描仪计算字符串中的令牌发生率,java,java.util.scanner,Java,Java.util.scanner,我已经编写了这个方法countToken,它以扫描器s和字符串t作为参数,并返回int。它返回t作为标记出现在s中的时间数。这是我能做到的,对我来说这是有道理的,但它不工作的权利 public static int countToken(Scanner s, String t) { int count = 0; while (s.hasNext()==true) { if (s.next()==t) { count
public static int countToken(Scanner s, String t)
{
int count = 0;
while (s.hasNext()==true)
{
if (s.next()==t)
{
count++;
}
}
return count;
}
试试这个:
在这里,扫描器包含的书是给定的标记,t是给定的标记。因此,我们必须计算出在扫描器中发生了多少,这本书是给出的
输出:3所以这是我在阅读了所有评论和建议后得出的结论。让我知道你的想法
public static int countToken(Scanner s, String t)
{
int count=0;
String token="";
while (s.hasNext())
{
token = s.next();
if(token.equals(t))
{
count++;
}
else
{
}
}
return count;
}
请给出输入和预期输出的示例。。。你的问题对我来说没有意义。可能重复使用。等于比较Java中的字符串,而不是==。在看到你的答案后回到问题上来,你应该发布预期的输出和至少一个示例,我意识到,我犯了一个错误,认为如果扫描仪匹配您输入的t作为扫描仪输入中的最后一个数据,next将返回一个空字符串。您可以通过正则表达式匹配除t之外的所有内容来缓解这一问题。我会看看今天晚些时候我是否能抽出时间回来修正答案。我不知道这段代码如何帮助op理解。给出代码答案是不对的。放一些解释如果t是一个没有空格的字符串,并且您正在传递的扫描器仍然设置了默认的分隔符,那么这应该可以工作。请注意,String是不可变的,因此当您在while语句之外创建String token=时,它本身就是一个永远不会被再次使用的字符串。每次将字符串引用重新指定给新字符串时,它都会创建另一个字符串,而不是将新字符串数据放入现有的字符串对象immutable中。因此,如果您在一段时间内声明了token,那么它在Java中的阅读就会更自然。
public static int countToken(Scanner s, String t)
{
int count = 0;
while (s.hasNext())
{
String word=s.next();
if (word.toLowerCase().equals(t.toLowerCase()))
{
count++;
}
}
return count;
}
public static int countToken(Scanner s, String t)
{
int count=0;
String token="";
while (s.hasNext())
{
token = s.next();
if(token.equals(t))
{
count++;
}
else
{
}
}
return count;
}