获取java中字符串中的单词数

时间:2016-06-18 10:14:03

标签: java

这是我为计算字符串中的单词而编写的代码。

import tkinter.filedialog as tkFileDialog

我已经尝试了几次,但结果只是给了我,我做错了什么?

4 个答案:

答案 0 :(得分:2)

您好我同意您需要使用nextLine()
但据我所知,计算' ' (白色空间)不是计算单词的好方法 最好使用

String p = in.nextLine();
String[] list = p.split("\\W+"); 
System.out.print(list.length);

这样即使你的字符串以空格开头,它仍然没问题 这也使您可以跳过多个空格

答案 1 :(得分:0)

您的代码产生0的原因是当您致电

String p = in.next();

你的字符串获得第一个单词,然后停止。 next()扫描到第一个分隔符,然后返回。

替换通话
String p = in.nextLine();

阅读整行。

请注意,您的方法不正确,因为它依赖于计算空格的数量,而不是单词的数量。这不是一回事,因为单词可以用多个空格分隔。

更好的方法是重复调用next,直到hasNext()返回false,然后打印您能够成功调用next的次数。这将是用户输入的单词数。

答案 2 :(得分:0)

next()替换为nextLine(),否则会在第一个单词处停止,但不会继续。

Scanner#next()

  

查找并返回此扫描程序中的下一个完整令牌。一个   完整标记之前和之后是匹配的输入   分隔符模式。此方法可能在等待输入时阻塞   扫描,即使之前的hasNext()调用返回true。

扫描仪的默认分隔符

  

[...]扫描仪使用分隔符将其输入分解为令牌   模式,默认匹配空格。[...]

解决方案

Scanner in = new Scanner(System.in);
System.out.print("enter a line: ");
int count = (int)Pattern.compile("\\W+")
                        .splitAsStream(in.nextLine())
                        .count();
System.out.println(count);

来源:Javadoc

答案 3 :(得分:0)

您可以通过空格使用str = "Hello, a b c"; String[] splited = str.split("\\s+"); ,然后获取大小。

div {
  height: 100px;
  width: 100px;
  background: white;
  background-image: 
  linear-gradient(45deg, transparent 70px, red 70px, black 72px, transparent 72px),
  linear-gradient(-45deg, transparent 70px, red 70px, blue 72px, transparent 72px),
  radial-gradient(circle at 50px 50px, green 5px, transparent 40px);
}

并添加其他符号以进行拆分。