gpt4 book ai didi

java - Java 中的字符串分词器给出错误的输出。需要帮助(可能是一个简单的解决方案)

转载 作者:行者123 更新时间:2023-12-01 18:35:58 25 4
gpt4 key购买 nike

我的代码基本上是查找字符串中的单词数(是的,非常简单,但它不起作用)。我尝试了多种方法并多次尝试更改代码。谁能向我解释为什么这段代码不起作用,以及是否可以给我一个更好/有效的代码。

 StringTokenizer stspace = new StringTokenizer(sent, " .?");
int nTokenSpace = stspace.countTokens();



String mspace[] = new String[nTokenSpace];


for(int i=0;i<nTokenSpace;i++)
{
mspace[i] = stspace.nextToken();


}
for(int i=0;i<nToken;i++)
{
String k = mspace[i];
int freq = 0;
for(int x=0;x<nTokenSpace;x++)
{
if(k==mspace[x])
{
freq++;
}
}
System.out.println(k+"\t"+freq);
}

“My.Name.Is.Anon.Is.Anon.”所需的输出应该是

My  1
Name 1
Is 2
Anon 2

But I get
My 1
Name 1
Is 1
Anon 1
Is 1
Anon 1

我感觉这里有一个明显的错误,但我只是没有看到它(需要新的眼光>.>)

最佳答案

您的错误在这里:

if(k==mspace[x])

您需要使用

if (k.equals(mspace[x]))

比较字符串

如果您不希望输出中出现重复项,您可以将标记添加到循环之前的 Set 中:

Set<String> uniqueTokens = new LinkedHashSet<String>(Arrays.asList(mspace));
for (String k : uniqueTokens) {
int freq = 0;
for (int x = 0; x < nTokenSpace; x++) {
if (k.equals(mspace[x])) {
freq++;
}
}
System.out.println(k + "\t" + freq);
}

关于java - Java 中的字符串分词器给出错误的输出。需要帮助(可能是一个简单的解决方案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22016805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com