这是我为计算字符串中的单词而编写的代码。
import tkinter.filedialog as tkFileDialog
我已经尝试了几次,但结果只是给了我,我做错了什么?
答案 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);
}
并添加其他符号以进行拆分。