用Java编写程序输出一个字符串统计其中有多少个单词 单词用空格隔开
时间: 2024-10-22 20:12:08 浏览: 37
在Java中,你可以通过分割字符串并遍历每个部分来统计字符串中有多少个单词。这里是一个简单的示例,使用`split()`函数来按空格分隔字符串,并计算结果:
```java
public class WordCounter {
public static void main(String[] args) {
String inputString = "这是一个包含多个单词的句子";
// 使用正则表达式 "\s+" 来匹配一个或多个连续的空格
String[] words = inputString.split("\\s+");
int wordCount = words.length;
System.out.println("输入字符串中有 " + wordCount + " 个单词。");
}
}
```
在这个例子中,`words.length` 就是字符串中单词的数量。注意,这个代码会把标点符号后面的单词也算作单独的一个单词,如果你只想计算真正的英文单词,可能需要额外处理。
相关问题
写一个 Java 程序,命名为“ReverseStrjava”,实现如下功能, 控制台输入一个字符串s,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串,字符串中每个单词间使用一个或多个空格隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串
当然,我可以帮你编写一个简单的 Java 程序来实现这个功能。这里是一个使用 `String` 的内置方法来分割和组合单词的示例:
```java
import java.util.Scanner;
public class ReverseWords {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String input = scanner.nextLine();
scanner.close();
// 分割输入字符串为单词数组,然后反转数组并重新组合成字符串
String reversedString = reverseWords(input);
System.out.println("反转单词后的结果: " + reversedString);
}
public static String reverseWords(String s) {
String[] words = s.split("\\s+");
StringBuilder reversedStringBuilder = new StringBuilder();
for (int i = words.length - 1; i >= 0; i--) {
reversedStringBuilder.append(words[i]);
if (i != 0) { // 如果不是第一个单词,在末尾添加一个空格
reversedStringBuilder.append(" ");
}
}
return reversedStringBuilder.toString();
}
}
```
在这个程序中,我们首先使用 `Scanner` 类从控制台读取用户的输入。接着调用 `reverseWords` 方法,该方法接收输入的字符串,使用正则表达式 `"\\s+"`(匹配一个或多个空格)将其拆分为单词数组。然后,我们遍历数组并将单词逆序添加到 `StringBuilder` 中,确保每个单词之间只有一个空格。
运行此程序时,按照提示输入一个包含空格分隔的字符串,你会看到单词顺序被成功反转后输出的结果。
一个变量名为 str的字符串,一个字符串集合wordSet,请编写Java代码判断 str字符串是否可以切分为由wordSet符串集合中的单词构成的句子,单词之间用空格隔开。
好的,可以使用动态规划(DP)来解决这个问题。我们定义一个长度为 n+1 的布尔型数组 dp,dp[i] 表示 str 的前 i 个字符能否被 wordSet 中的单词分割而成。
初始时,dp[0] 为 true,表示空串可以被分割而成。
接下来,我们需要枚举分割点 j,判断 str[j:i] 是否在 wordSet 中。如果在,且 dp[j] 为 true,则 dp[i] 也为 true。最终,我们返回 dp[n] 的值即可。
下面是 Java 代码实现:
```java
public class Solution {
public boolean wordBreak(String s, List<String> wordDict) {
int n = s.length();
boolean[] dp = new boolean[n + 1];
dp[0] = true;
for (int i = 1; i <= n; i++) {
for (int j = 0; j < i; j++) {
if (dp[j] && wordDict.contains(s.substring(j, i))) {
dp[i] = true;
break;
}
}
}
return dp[n];
}
}
```
使用示例:
```java
List<String> wordDict = new ArrayList<>();
wordDict.add("ace");
wordDict.add("game");
String s = "acegame";
Solution solution = new Solution();
System.out.println(solution.wordBreak(s, wordDict)); // 输出 true
wordDict.clear();
wordDict.add("ace");
wordDict.add("game");
wordDict.add("love");
s = "acegamelovegame";
System.out.println(solution.wordBreak(s, wordDict)); // 输出 true
```
阅读全文
相关推荐
















