活动发起人@小虚竹 想对你说:
这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你参加为期14天的创作挑战赛!
提醒:在发布作品前,请将不需要的内容删除。
一、题目描述
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
-
把每个单词的首字母变为大写。
-
把数字与字母之间用下划线字符(_)分开,使得更清晰
-
把单词中间有多个空格的调整为 1 个空格。
输入描述
用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由 1 个或多个空格分隔。假设用户输入的串长度不超过 200 个字符。
输出描述
输出处理好的字符串。
输入输出样例
示例
you and me what cpp2005program
输出
You And Me What Cpp_2005_program
二、代码展示
import java.util.*;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);String str = scan.nextLine();char[] c = str.toCharArray();int n = c.length;StringBuilder st = new StringBuilder();boolean isNewWord = true; // 标记是否为新单词的开始for (int i = 0; i < n; i++) {char x = c[i];if (x >= 'a' && x <= 'z') {if (isNewWord) {x = Character.toUpperCase(x);isNewWord = false;}st.append(x);} else if (x == ' ') {if (!isNewWord) { // 只有在不是新单词开始时才添加空格st.append(x);isNewWord = true; // 下一个非空格字符将是新单词的开始}} else if (x >= '0' && x <= '9') {if (i > 0 && c[i - 1] >= 'a' && c[i - 1] <= 'z') {st.append('_');}st.append(x);isNewWord = true; // 数字后可能是新单词的开始} else {// 处理其他字符(根据需求,可以选择忽略或处理)st.append(x);isNewWord = true;}}System.out.println(st.toString());}
}