您的位置:首页 > 其它

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

2011-11-03 23:33 295 查看


法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+"个数字段。");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string class 存储