題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
分析:利用while語句,條件為輸入的字符不為'\n'.
1 import java.util.*; 2 public class Prog7{ 3 public static void main(String[] args) { 4 System.out.println("請輸入一串字符:"); 5 Scanner scan=new Scanner(System.in); 6 //注:Scanner類中的next()方法遇到空格就不進去了,比如說輸入haha nene就只會得到haha,空格后面的都被忽略了,因此要用nextLine() 7 String str=scan.nextLine();//將一行字符轉化為字符串 8 scan.close(); 9 count(str); 10 } 11 //統計輸入的字符數 12 private static void count(String str) { 13 String E1="[\u4e00-\u9fa5]";//此處使用了正則表達式[]匹配一個漢字。漢字Unicode 編碼范圍u4e00-u9fa5 14 String E2="[a-zA-Z]";//此處使用了正則表達式[],匹配所有字母 15 String E3="[0-9]";//此處使用了正則表達式[],匹配所有數字 16 String E4="[\\s]";//空格為\s,此處使用了轉義字符 17 int countChinese=0; 18 int countLetter=0; 19 int countNumber=0; 20 int countSpace=0; 21 int countOther=0; 22 char[] array_Char=str.toCharArray();//將字符串轉化為字符數組 23 String[] array_String=new String[array_Char.length];//漢字只能作為字符串處理 24 for(int i=0;i<array_Char.length;i++) 25 array_String[i]=String.valueOf(array_Char[i]); 26 //遍歷字符串數組中的元素 27 for(String s:array_String) { 28 if(s.matches(E1)) 29 countChinese++; 30 else if(s.matches(E2)) 31 countLetter++; 32 else if(s.matches(E3)) 33 countNumber++; 34 else if(s.matches(E4)) 35 countSpace++; 36 else 37 countOther++; 38 } 39 System.out.println("輸入的漢字個數:"+countChinese); 40 System.out.println("輸入的字母個數:"+countLetter); 41 System.out.println("輸入的數字個數:"+countNumber); 42 System.out.println("輸入的空格個數:"+countSpace); 43 System.out.println("輸入的其他字符個數:"+countOther); 44 } 45 } 46 /*運行結果 47 請輸入一串字符: 48 中文AbC 1234.、 49 輸入的漢字個數:2 50 輸入的字母個數:3 51 輸入的數字個數:4 52 輸入的空格個數:2 53 輸入的其他字符個數:2 54 */