一个字符串的练习:

用户随机输入一串字符,分别输出其中的数字、英文、中文,分别输出其中的数字、英文、中文出现的次数!

分析:

用户随机输入,所以需要Scanner类,后面的则是题目要求,找出其中的数字、英文、中文输出,并且分别输出它们出现的次数。因为其中涉及到对字符串的查找和分析,所以推荐用StringBuffer类,利用这个类,我们可以很便捷的就完成题目要求:

准备工作:

  • 实例化Scanner对象:用于实现用户输入
  • 实例化StringBuffer对象:将用户输入的String值给StringBuffer,方便后面的查找和分析工作

下面是具体代码:

package one;
 
/**
 *	随机输入一串字符
 *		分别输出其中的数字、英文、中文
 *		分别输出其中的数字、英文、中文出现的次数
 */
import java.util.Scanner;
 
public class sdas {
 
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);// 实例化Scanner类对象,用于实现用户输入
		try {
			System.out.println("请输入字符串");
			goString gs = new goString(sc.nextLine());// 接收用户输入的String字符串并实例化解题类对象
			gs.go();// 调用解题类中的计算方法
		} catch (Exception e) {
			System.out.println("抱歉,程序在运行过程中出现了未知异常,请发送错误信息,帮助我们优化程序!");
		} finally {
			sc.close();
		}
	}
}
 
//用于实现题目的类
class goString {
	private String str;
 
	public void go() {
		StringBuffer sb = new StringBuffer(this.str);
		String in = "";
		String eg = "";
		String ch = "";
		if (!"".equals(str) && str != null) {
			int index = 0;
			while (true) {
				if (index >= sb.length()) {// 当前要进行判断的字符下标是否超过字符串的长度
					break;// 退出循环
				}
				// 判断是否是数字
				if (sb.charAt(index) >= '0' && sb.charAt(index) <= '9') {
					in += sb.charAt(index);// 将数字添加到结果中存放
					// 判断是否是英文字母
				} else if (sb.charAt(index) >= 'a' && sb.charAt(index) <= 'z'
						|| sb.charAt(index) >= 'A' && sb.charAt(index) <= 'Z') {
					eg += sb.charAt(index);// 将字母添加到结果中存放
				} else {
					ch += sb.charAt(index);// 将中文添加到结果中存放
				}
				index++;// 变量的更新
			}
		}
		/* 输出结果 */
		System.out.println("数字:" + in + "   出现次数:" + in.length());
		System.out.println("字母:" + eg + "   出现次数:" + eg.length());
		System.out.println("中文:" + ch + "   出现次数:" + ch.length());
	}
 
	public goString(String str) {
		super();
		this.str = str;
	}
 
	public String getStr() {
		return str;
	}
 
	public void setStr(String str) {
		this.str = str;
	}
}