Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用扫描仪计算字符串中的令牌发生率_Java_Java.util.scanner - Fatal编程技术网

Java 使用扫描仪计算字符串中的令牌发生率

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

我已经编写了这个方法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++;
        }
    }
    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;
}