1. 程式人生 > >【華為OJ40】輸入一行字元,分別統計出包含英文字母、空格、數字和其它字元的個數

【華為OJ40】輸入一行字元,分別統計出包含英文字母、空格、數字和其它字元的個數



輸入描述:

輸入一行字串,可以有空格



輸出描述:

統計其中英文字元,空格字元,數字字元,其他字元的個數


輸入例子:
1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\/;p0-=\\][

輸出例子:
26
3
10
12
import java.util.*;

public class Main{
	
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str = sc.nextLine();
            System.out.println(getEnglishCharCount(str));
             System.out.println(getBlankCharCount(str));
             System.out.println(getNumberCharCount(str));
             System.out.println(getOtherCharCount(str));
        }
        sc.close();
    }
    
       /**
     * 統計出英文字母字元的個數。
     * 
     * @param str 需要輸入的字串
     * @return 英文字母的個數
     */
    public static int getEnglishCharCount(String str)
    {
        int numOfChars = 0;
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
            if((c<= 'z' && c>= 'a') || (c<= 'Z' && c>= 'A'))
                numOfChars++;
        }
        return numOfChars;
    }
    
    /**
     * 統計出空格字元的個數。
     * 
     * @param str 需要輸入的字串
     * @return 空格的個數
     */
    public static int getBlankCharCount(String str)
    {
        
         int numOfSpace = 0;
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
            if(c == ' ')
                numOfSpace++;
        }
        return numOfSpace;
    }
    
    /**
     * 統計出數字字元的個數。
     * 
     * @param str 需要輸入的字串
     * @return 英文字母的個數
     */
    public static int getNumberCharCount(String str)
    {
        int nums = 0;
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
            int cNum = (int)c;
            if(cNum <=9 && cNum >=0)
                nums++;
        }
        return nums;
    }


        /**
     * 統計出其它字元的個數。
     * 
     * @param str 需要輸入的字串
     * @return 英文字母的個數
     */
    public static int getOtherCharCount(String str)
    {
        int nums = 0;
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
          //  int cNum = (int)c;
            if( !( (c<= 'z' && c>= 'a') || (c<= 'Z' && c>= 'A') || (c == ' ')    ))
                nums++;
        }
        return nums;
    }
    
    
}


被題目中的程式碼給迷惑了,自己的做法:
import java.util.*;

public class Main{
    
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str = sc.nextLine();
            System.out.print(getCounts(str));
        }
        sc.close();
    }
    
    private static String getCounts(String str){
        StringBuilder sb =  new StringBuilder(128);
        int[] result = new int[4];
        
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
        	if( (c<='z' && c>='a')||(c<='Z' && c>='A') ){
                result[0]++;
            }else if(c==' '){
                result[1]++;
            }else if(c<='9' && c>='0'){
                result[2]++;
            }else{
                result[3]++;
            }    
        }
        
        for(Integer i:result){
            sb.append(i).append('\n');
        }
        
        return sb.toString();
    }
}


輸入描述:

輸入一行字串,可以有空格



輸出描述:

統計其中英文字元,空格字元,數字字元,其他字元的個數


輸入例子:
1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\\/;p0-=\\][

輸出例子:
26
3
10
12