一、题目
输入一段英文句子,将每个单词的首字母大写再输出。示例:
输入:I am very glad to see you.
输出:I Am Very Glad To See You.
二、实验代码
法一:利用空格将输入的句子拆分成单独的单词,再对其每一个单词的首字母变大写然后再进行拼接,即str1[i]=str1[i].substring(0,1).toUpperCase()+str1[i].substring(1);。
package fighting;
import java.util.Scanner;
public class fighting
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
String[] str1=str.split(" ");//将英文句子利用空格分隔成字符串数组
String str2=new String();//用于存放将单词首字母大写后的字符串
for(int i=0;i<str1.length;i++)
{
str1[i]=str1[i].substring(0,1).toUpperCase()+str1[i].substring(1);//substring(0,1).toUpperCase()是将单词第一个字母大写,再连接上后面的字母substring(1),注意区分substring的两种用法
if(i==str1.length-1)//该判断是用来隔开进行以上操作后的单词,若不是最后一个单词,中间需要用空格隔开
{
str2=str2+str1[i];
}
else
{
str2=str2+str1[i]+" ";
}
}
System.out.println(str2);
}
}
法二:可以将字符串拆分成单个的字符类型数组,对单词的首字母进行-32操作,需要提前该单词的首字母是否为大写字母,即 char[] a=str1[i].toCharArray(); a[0]=(char)(a[0]-32); 。
package fighting;
import java.util.Scanner;
public class fighting
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
String[] str1=str.split(" ");//将英文句子利用空格分隔成字符串数组
String str2=new String();//用于存放将单词首字母大写后的字符串
for(int i=0;i<str1.length;i++)
{
char[] a=str1[i].toCharArray();//将字符串类型转换为字符数组(单位为每个单词)
if(a[0]>=97&&a[0]<=122)//当单词的首字母为小写字母时减去32 ,英文字母的ASCII码(a~z:97-122;A~Z:65-90)
{
a[0]=(char)(a[0]-32);//取出每个单词的首字母,因为每个小写字母对应的大写字母,它们之间的ASCII码值相差32,比如a的ASCII值为97,A的ASCII为65
str1[i]=String.valueOf(a);//使用String包装类valueOf(char[] data),将字符数组转换成字符串
}
if(i==str1.length-1)//该判断是用来隔开进行以上操作后的单词,若不是最后一个单词,中间需要用空格隔开
{
str2=str2+str1[i];
}
else
{
str2=str2+str1[i]+" ";
}
}
System.out.println(str2);
}
}
三、运行结果
四、实验总结
1、substring的两种用法:
(1)substring(a,b);表示含头不含尾,即截取输出第a+1个和第b个之间的字符串(a可以为0);
(2)substring(a);表示去掉第a个之前的字符,返回剩下的字符串。
String str="development";
String str1=str.substring(0,2);//截取输出第一和第二个字符
String str2=str.substring(5);//去掉第五个字符l之前的字符,输出剩下的字符
System.out.println(str1);//de
System.out.println(str2);//opment
2、因为英文字母的ASCII码(a-z:97-122;A-Z:65-90),每个小写字母对应的大写字母,它们之间的ASCII码值相差32。