上周敲代码时,碰到一个题目,文字不多,但是要求还蛮多的。题目是这样的,给你们看一下:
这个题目前两问还挺简单的,统计英文字母,用一个循环遍历文字,然后满足if条件用count计数就可以了。(注意:count使用前要清零哦)
if((x>='a'&&x<='z')||(x>='A'&&x<='Z'))
count++;
将文字中的the 用a 来替换,同样也需要一个循环来遍历文字,不过在java中,String类有这样一个方法,可以直接进行替换:
s.replaceAll("the", "a")
前两问已经解决好了,我们现在来看一下第三问,之所有说它有点复杂,是因为对文字中数字串的理解。找出所有的数字串进行输出,是只能输出一个部分,这个部分只能包含数字,不能含有其他的字母,符号,也不是只输出数字,不管数字是不是连续。举个例子吧:输入这样的内容123 45a b67 8c9,则只能输出123,其他的内容均不能输出。
// s是输入的所有文字
int k = 1; //k=1意味着下一个被检查的串首字符默认为数字
StringBuffer a = new StringBuffer();
System.out.println("该段文字所有的数字串有:");
for(int i=0;i<s.length();i++) {
char x = s.charAt(i);
if(x==' ') //一个串检查完
{
k = 1; //k=1意味着下一个被检查的串首字符默认为数字
if(a.length()!=0)
System.out.print(a+" "); //输出变量a中的内容
a.setLength(0); //清空变量a的内容
continue;
}
if(Character.isDigit(x))
{
if(k==1)
a.append(x); //遇见数字,k=1,就追加到变量a 中
}
else//遇见非数字,清空a变量的内容,k=0
{
k = 0; //k=0意味着被检查的串不满足条件,以后内容不会被追加到变量a中
a.setLength(0);
}
}
现在三个问题都已经解决了,我们来看一下最后的运行结果吧!
`