單詞長度(4分)
題目內容:
你的程序要讀入一行文本,其中以空格分隔為若干個單詞,以‘.’結束。你要輸出這行文本中每個單詞的長度。這里的單詞與語言無關,可以包括各種符號,比如“it's”算一個單詞,長度為4。注意,行中可能出現連續的空格。
輸入格式:
輸入在一行中給出一行文本,以‘.’結束,結尾的句號不能計算在最后一個單詞的長度內。
輸出格式:
在一行中輸出這行文本對應的單詞的長度,每個長度之間以空格隔開,行末沒有最后的空格。
輸入樣例:
It's great to see you here.
輸出樣例:
4 5 2 3 3 4
題目分析:本題考察對象方法的使用,在本例中應該是split方法的使用,由此順延出另一個難點:正則表達式。
在這里有一個技巧是,java的數組在創建的時候是不能不確定長度的,因此我一開始想要直接把輸入用.next方法寫入到一個數組中去是不現實的,但是split方法提供了一個辦法:把一個字符串按某個標記分為幾段,而后直接初始化入某個字符串數組,如:
1
String eachShuru[]
=
shuru.split(
"
\\s+
"
);
用這樣的方法可以避免一開始就需要指定數組長度的問題。
難點二:正則表達式的用法: 30分鍾入門正則表達式
需要注意的是,在split方法中,由於正則表達式是在雙引號中,故,轉義字符\ 應該寫成\\ ,就這。
以下是回答:
1
import
java.util.Scanner;
2
3
public
class
Main {
4
5
public
static
void
main(String[] args) {
6
//
TODO Auto-generated method stub
7
8
Scanner in
=
new
Scanner(System.in);
9
10
String shuru
=
new
String(
""
);
11
12
shuru
=
in.nextLine();
13
in.close();
14
15
String eachShuru[]
=
shuru.split(
"
\\s+
"
);
16
17
for
(
int
i
=
0
; i
<
eachShuru.length; i
++
){
18
if
( i
<
eachShuru.length
-
1
){
19
System.out.print(eachShuru[i].length()
+
"
"
);
20
}
21
else
{
22
System.out.print(eachShuru[i].length()
-
1
);
23
}
24
}
25
26
27
}
28
}
