Java计数字总数和字符长度

时间:2016-11-23 14:15:36

标签: java arrays string char

如何使用用户输入字符串的数组创建程序,它会检查有多少单词有x个字母然后打印单词总数。例如,如果用户输入:

  

用户539537g是coolio8fsd

字数为6:“The”“用户”“g”“是”< / strong>,“coolio”“fsd”。该程序将任何非字母都视为字分隔符,即数字,符号和空格。

所以程序应输出:

  

此字符串共有6个单词。

     

一个1个字母的单词

     

一个2个字母的单词

     

两个3个字母的单词

     

一个4个字母的单词

     

一个6个字母的单词

2 个答案:

答案 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"));

我确实设法在一行中执行此操作,但可读性降低了。这似乎是一个很好的平衡。