gpt4 book ai didi

java - 从给定句子中提取所有单词并打印它们及其辅音计数

转载 作者:行者123 更新时间:2023-11-30 02:43:49 26 4
gpt4 key购买 nike

我必须以一个句子作为输入,从中逐个提取每个单词,并用它们打印它们各自的辅音计数。这是我正在使用的代码:

for(int i=0;i<l;i++)
{
count=0; word="";
if(sentence.charAt(i)!=' ')
{
word+=sentence.charAt(i);
}
else
{
for(int j=0;j<word.length();j++)
{
ch=word.charAt(i);
if (ch!='A'&&ch!='E'&&ch!='I'&&ch!='E'&&ch!='O'&&ch!='U')
{
count++;
}
}}
System.out.print(word+"\t"+count);}

我一直在尝试调试这个,并且总是得到各种我不需要的输出。我面临的两个主要问题是:

  1. 如何在不使用 Scanner 或其他类且仅使用基本循环的情况下从句子中提取单词
  2. 如何以表格形式正确列出准确的辅音计数

此外,我打算将提取的单词添加到字符串数组中,其索引等于其辅音计数。

StringArr[count]=" "+word;

如果两个以上的单词具有相同的辅音计数,我会在此处添加空格以便让路。

感谢任何帮助。

P.S.-我是这方面的新手,所以请随时指出我可能注意到的任何上下文错误。

最佳答案

如果您使用最简单的代码来解决问题,您将拥有更少的代码,这(通常)更容易理解,因此错误也更少。

辅音的数量就是删除非辅音的长度:

int count = str.replaceAll("(?i)[^b-df-hj-np-tv-z]", "").length();

正则表达式解释:

  • (?i) 表示忽略大小写
  • [^...] 是一个否定字符类,即不在列表中的任何字符
  • b-d 表示 bd(含)范围内的字符
  • 其他字符范围等

此代码也适用于边缘情况,而您的代码有一个错误;它将所有“非元音”都算作辅音,但这也会算作撇号。考虑一下“can't”有3个辅音。

使用上面的内容,加上 split() 来获取“单词”:

for (String word : sentence.split("\\s+")) {
int count = str.replaceAll("(?i)[^b-df-hj-np-tv-z]", "").length();
System.out.println(word + '\t' + count);
}

使用流并内联计数,您可以在 1 条语句中完成:

Arrays.stream(sentence.split("\\s+"))
.forEach(w -> System.out.println(w + '\t' +
w.replaceAll("(?i)[^b-df-hj-np-tv-z]", "").length());

免责声明:代码可能无法编译或无法工作,因为它是在我的手机上插入的(但有一个合理的机会它会工作)

关于java - 从给定句子中提取所有单词并打印它们及其辅音计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825836/

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