编程要求 仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,统计给定字符串中每个单词出现的次数,具体要求如下: 接收给定的一行字符串(例:hello-hello,hi,job-hi,...,依次切割英文逗号和“-”,可以得到每个单词); 统计各单词出现的次数。import scala.io.StdIn object ForDemo { def main(args: Array[String]): Unit = { // 请在 Begin-End 间编写代码 /********** Begin **********/ // 统计给定字符串中各单词出现的次数 /********** End **********/ } }需要补充什么代码
时间: 2025-06-10 14:44:54 浏览: 26
### 实现Scala代码以统计字符串中每个单词的出现次数
以下是完整的Scala代码,用于实现统计给定字符串中每个单词出现次数的功能。代码基于提供的框架,并进行了优化以确保功能正确性和代码可读性。
```scala
import scala.io.StdIn
object WordCount {
def main(args: Array[String]): Unit = {
// 从标准输入读取一行字符串
val str = StdIn.readLine()
// 使用正则表达式分割字符串,按逗号和连字符分隔[^3]
val words = str.split("[-|,]")
// 使用 groupBy 方法将单词分组,并计算每个单词出现的次数
val counts = words.groupBy(identity).mapValues(_.length)
// 遍历并打印每个单词及其出现次数
counts.foreach { case (word, count) =>
println(s"单词: $word, 个数 $count")
}
}
}
```
#### 代码解析
- **读取输入字符串**:通过`StdIn.readLine()`方法读取用户输入的一行字符串。
- **分割字符串**:使用正则表达式`"[-|,]"`对字符串进行分割,该正则表达式匹配逗号和连字符,从而将字符串拆分为多个单词[^3]。
- **分组与计数**:利用`groupBy(identity)`方法按照单词本身进行分组,然后通过`mapValues(_.length)`计算每个单词出现的次数[^3]。
- **输出结果**:遍历`counts`集合,使用`println`方法输出每个单词及其对应的出现次数。
#### 示例运行
假设用户输入以下字符串:
```
hello-hello,hi,job-hi
```
程序将输出:
```
单词: hello, 个数 2
单词: hi, 个数 2
单词: job, 个数 1
```
#### 注意事项
- 如果输入字符串为空或仅包含分隔符,则输出为空。
- 输入的字符串应避免包含多余的空格,否则可能会影响单词的正确统计。如果需要处理多余空格,可以在分割前调用`trim()`方法去除首尾空格,并使用`filter(_.nonEmpty)`过滤掉空字符串[^3]。
阅读全文
相关推荐


















