笔记:从“字母+数字”类型的字符串中求出数字段的个数。


法I: 较繁琐,但思路很简单。可直接看法II

//求“字母+数字”类型的字符串中数字段的个数
public class Task2_1 {
	public static void main(String args[]){
		// String s=args[0];				//键盘接收
		String s = "cat234dog456nice56tt2011";
		int count = 0;					//用于存放数字段的个数
		char[] Arr = s.toCharArray();			//将字符串转变成字符数组
		int numtemp = 0;				//用于存放相邻数字的个数		
		for(int i = 0 ; i < Arr.length ; i++){	//开始遍历字符串		
			if(Arr[i] >='0'&&Arr[i] <='9'){		
				numtemp++;	
				continue;			//调出本次循环,避免下面的count重复累加
			}
			
			if(numtemp > 0){			//numtemp大于0则说明有数字出现
				count++;
				numtemp=0;	
			}					
			
		}
		if(Arr[Arr.length-1]>='0'&&Arr[Arr.length-1]<='9')	{	//判断数字段在字符串末尾的情况
			count++;	
		}	
		System.out.println("字符串“"+s+"”中有"+count+"个数字段。");

		//下面的代码试图拆出字符串中包含的数字部分。
		System.out.print("这"+count+"个数字段是:");
		for(int i=0;i<Arr.length;i++)
		{
			if(!Character.isDigit(Arr[i]))
			{
				Arr[i]=' ';						//将字符串中所有的字母用空格替换掉
			}
		}
		String str1 = new String(Arr);		//将新生成的字符串赋给str1
		String []num = str1.trim().split(" ");//用split()方法削去字符串两边的空格
		for(String t:num)						//foreach()方法分别打印数字
		{
			if(!"".equals(t.trim()))
			{
				System.out.print(t+" ");
			}
		}
	}
}


法II:
//获取数字串的第二种方案
//利用substring()方法直接截取出数字段
public class Task2_2
{
	public static void main(String[] args)
	{
		String s = "cat234dog456nice56tt2011";
		int count = 0;			//存储数字段的个数
		int nTmp=0;			//用以记录连续数字的位数
		char Arr[] = s.toCharArray();
		System.out.print("字符串“"+s+"”的数字部分为:");
		for(int i = 0; i < Arr.length; i++)
		{
			nTmp = 0;
			while(i + nTmp < Arr.length 		//截区出连续的数字
					&& Arr[i + nTmp] >= '0' 
					&& Arr[i + nTmp] <= '9') 
				{nTmp++;}
			if(nTmp > 0)
			{
				count++;
				System.out.print(s.substring(i, i + nTmp) + " ");	//i+nTmp为截止位
				i += nTmp;			//i跳格到数字段的下一字母处				
			}
		}
		System.out.print(",\n所以它有"+count+"个数字段。");
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值