[英]get the number of words in the string in java
這是我為計算字符串中的單詞而編寫的代碼。
import java.util.Scanner;
public class word1
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("enter a line: ");
String p =in.next();
int q= p.length();
int i;
int count=0;
for( i=0; i<q; i++)
{
if( p.charAt(i)==' ')
{
count++;
}
}
System.out.print(count);
}
}
我已經嘗試了幾次,但結果只給了我0 ,我做錯了什么?
嗨,我同意您需要使用nextLine()
但是據我了解,對''(空格)進行計數並不是計數單詞的一種好方法
最好用
String p = in.nextLine();
String[] list = p.split("\\W+");
System.out.print(list.length);
這樣即使您的字符串以空格開頭也可以
這也使您可以跳過多個空格
您的代碼產生0
的原因是當您調用
String p = in.next();
您的字符串會得到第一個單詞,然后停止。 next()
掃描到第一個定界符,然后返回。
替換為
String p = in.nextLine();
閱讀整行。
請注意,您的方法是不正確的,因為它依賴於計算空格數,而不是單詞數。 這不是同一件事,因為單詞可以用多個空格分隔。
更好的方法是重復調用next
,直到hasNext()
返回false
,然后打印能夠成功調用next
。 這將是用戶輸入的單詞數。
用nextLine()
替換next()
,否則它將在第一個單詞處停止並且不會繼續。
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
您可以使用按空格split
,然后獲取大小。
str = "Hello, a b c";
String[] splited = str.split("\\s+");
並添加其他符號以進行分割。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.