在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
(1)把每个单词的首字母变为大写。
(2)把数字与字母之间用下划线字符(_)分开,使得更清晰;
(3)把单词中间有多个空格的调整为1个空格。
我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。假设用户输入的串长度不超过200个字符。
代码如下:
package work_11;
import java.util.Scanner;
public class num_4_1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String k=sc.nextLine();
char kk[]=new char[30];
char m[]=k.toCharArray();
/*for(int i=0;i<=k.length()-1;i++)
{
System.out.println(m[i]+"***");
}*/
int count=0;
for(int i=0;i<k.length();i++)
{
if(i!=0&&m[i]==' '&&m[i-1]==' ')
continue;
else if(i!=0&&m[i]>='a'&&m[i]<='z'&&m[i-1]==' ')
kk[count++]=(char)(m[i]-32);
else if(i<k.length()-1&&Character.isDigit(m[i])==true&&Character.isDigit(m[i+1])==false&&m[i+1]!=' ')
{
kk[count++]=m[i];
kk[count++]='_';
}
else if(i<k.length()-1&&Character.isDigit(m[i])==false&&Character.isDigit(m[i+1])==true&&m[i]!=' ')
{
kk[count++]=m[i];
kk[count++]='_';
}
else
kk[count++]=m[i];
}
for(int i=0;i<count;i++)
{
System.out.print(kk[i]);
}
}
}
注意先判断i因为计算机是按顺序执行的,遇到不合法越界的会停止