黑马程序员技术交流社区

标题: 一个问题跪求高手!!! [打印本页]

作者: 郭锐    时间: 2012-8-17 00:19
标题: 一个问题跪求高手!!!
求一个程序,能实现属于一行字符串之后统计出其中汉字,字母,数字和空格以及其他字符的个数,,完全没有思路,求解答
作者: 王健    时间: 2012-8-17 00:25
package com.itcast;
/**
* ascii码表问题....
*/
import java.util.Scanner;
public class Test2{
        public static void main(String[] args){
                System.out.print("请输入一串字符:");
                Scanner scan = new Scanner(System.in);
                String str = scan.nextLine();//将一行字符转化为字符串
                scan.close();
                count(str);
        }
        //统计输入的字符数
        private static void count(String str){
                String E1 = "[\u4e00-\u9fa5]";//汉字
                String E2 = "[a-zA-Z]";
                String E3 = "[0-9]";
                String E4 = "\\s";//空格
                int countChinese = 0;
                int countLetter = 0;
                int countNumber = 0;
                int countSpace = 0;
                int countOther = 0;
                char[] array_Char = str.toCharArray();//将字符串转化为字符数组
                String[] array_String = new String[array_Char.length];//汉字只能作为字符串处理
                for(int i=0;i<array_Char.length;i++)
                  array_String[i] = String.valueOf(array_Char[i]);
                //遍历字符串数组中的元素
                for(String s:array_String){
                        if(s.matches(E1))
                          countChinese++;
                        else if(s.matches(E2))
                          countLetter++;
                        else if(s.matches(E3))
                          countNumber++;
                        else if(s.matches(E4))
                          countSpace++;
                        else
                          countOther++;
                }
                System.out.println("输入的汉字个数:"+countChinese);
                System.out.println("输入的字母个数:"+countLetter);
                System.out.println("输入的数字个数:"+countNumber);
                System.out.println("输入的空格个数:"+countSpace);
                System.out.println("输入的其它字符个数:"+countSpace);
        }
}

作者: 贾成龙    时间: 2012-8-17 00:36
我给你一个小例子 ,你照着这个改就是了!关于中文汉字的要查表了!
给你一个例子,你还是自己做出来这样才可以锻炼自己!

给定一个字符串,统计大写字母,小写字母,数字出现的个数.

public class StringTest {

        /**
         * @param args
         */
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个字符串(a-z,A-Z,0-9):");
                String str = sc.nextLine();

                // 调用功能返回一个数组
                int[] arr = countChar(str);

                int big = arr[0];
                int small = arr[1];
                int num = arr[2];

                System.out.println("big:" + big);
                System.out.println("small:" + small);
                System.out.println("num:" + num);
        }
        //如果你想返回多个数据,必须使用引用类型
        //如果你返回的是同一类型的多个数据,必须用数组
        //如果你返回的不是同一类型的多个数据,可以考虑使用自定义对象。
        public static int[] countChar(String str) {
                int[] arr = new int[3];
                for (int x = 0; x < str.length(); x++) {
                        char ch = str.charAt(x);
                        if (ch >= 'A' && ch <= 'Z') {
                                arr[0]++;
                        } else if (ch >= 'a' && ch <= 'z') {
                                arr[1]++;
                        } else if (ch >= '0' && ch <= '9') {
                                arr[2]++;
                        }
                }
                return arr;
        }
}
我这个小程序希望对你有帮助!
判断汉字的小程序是如下:
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class test {
public static void main(String[] args) {
  int count = 0;
  String regEx = "[\\u4e00-\\u9fa5]";
  // System.out.println(regEx);
  String str = "字符串";
  // System.out.println(str);
  Pattern p = Pattern.compile(regEx);
  Matcher m = p.matcher(str);
  System.out.print("提取出来的中文有:");
  while (m.find()) {
   System.out.print(m.group(0)+" ");
  }
  System.out.println();
  System.out.println(p.matches(regEx, str));
  
}
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2