單詞長度(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 }