【華為OJ40】輸入一行字元,分別統計出包含英文字母、空格、數字和其它字元的個數
阿新 • • 發佈:2019-01-24
輸入描述:
輸入一行字串,可以有空格
輸出描述:
統計其中英文字元,空格字元,數字字元,其他字元的個數
輸入例子:
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