一、题目
输入一段英文句子,将每个单词的首字母大写再输出。示例:

输入: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);
    }
}

三、运行结果

java 单词删除操作 把一个单词变成另一个 java将单词第一个变成大写_java


四、实验总结

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