如何使用用户输入字符串的数组创建程序,它会检查有多少单词有x个字母然后打印单词总数。例如,如果用户输入:
用户539537g是coolio8fsd
字数为6:“The”,“用户”,“g”,“是”< / strong>,“coolio”,“fsd”。该程序将任何非字母都视为字分隔符,即数字,符号和空格。
所以程序应输出:
此字符串共有6个单词。
一个1个字母的单词
一个2个字母的单词
两个3个字母的单词
一个4个字母的单词
一个6个字母的单词
答案 0 :(得分:0)
您可以使用带有正则表达式的字符串的split方法,将字符串拆分为单词数组(字符串),然后计算具有指定长度的字符串。
.+
答案 1 :(得分:0)
Streams将在这里工作。
// I'm assuming you can get the input from somewhere
// maybe a scanner
String input = "The user 539537g is coolio8fsd";
// Split on any non-letter
String[] words = input.split("[^A-z]");
Map<Long, Long> wordCounts =
Arrays.stream(words) // Stream the words
.filter(s -> !s.isEmpty()) // Filter out the empty ones
.map(String::length) // Map each string to its length
.collect(Collectors.groupingBy(i->i, Collectors.counting()); // Create a map with length as key and count as value
System.out.println("There are " + wordCounts.size() + " words.");
wordCounts.forEach((k,v) -> System.out.println(v + " " + k + "-letter words"));
我确实设法在一行中执行此操作,但可读性降低了。这似乎是一个很好的平衡。