【华为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

你可能感兴趣的:(【华为OJ40】输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数)