【发布时间】:2015-12-16 22:33:45
【问题描述】:
我的一个问题集要求我创建一个子例程,它将一个字符串变量作为参数并返回相同的字符串,除了每个单词的首字母大写。文中的例子使用了教授专门设计的非标准类。我不想这样做,因为我认为通过标准课程学习比看看还有什么更有意义。我遇到的问题是我的子程序是返回一个全部大写的字符串。这是我的代码:
import java.util.Scanner;
public class Capitalize {
static String capitalizeString(String x) {
String completedConversion = "";
for (int i=0; i < x.length(); i++) {
if (i == 0) {
char ch = x.charAt(i);
ch = Character.toUpperCase(ch);
completedConversion = completedConversion + ch;
i++;
}
if (Character.isLetter(i - 1)) {
char ch = x.charAt(i);
completedConversion = completedConversion + ch;
}
else {
char ch = x.charAt(i);
ch = Character.toUpperCase(ch);
completedConversion = completedConversion + ch;
}
}
return completedConversion;
} // End of subroutine
我还没有添加任何评论等,但应该很简单。
已解决:使用 Keammoort 的答案
public class Capitalize {
static String capitalizeString(String x) {
String completedConversion = "";
for (int i=0; i < x.length(); i++) {
if (i == 0) {
char ch = x.charAt(i);
ch = Character.toUpperCase(ch);
completedConversion = completedConversion + ch;
}
else if (!Character.isWhitespace(x.charAt(i - 1))) {
char ch = x.charAt(i);
completedConversion = completedConversion + ch;
}
else {
char ch = x.charAt(i);
ch = Character.toUpperCase(ch);
completedConversion = completedConversion + ch;
}
}
return completedConversion;
【问题讨论】:
-
我最初确实有一个“if, else if, else”,但暂时删除了它。
-
else convert everything to uppercase?您还应该对 Java 中的String连接进行一些研究,并考虑改用StringBuilder。事实上,你的整个循环是不敬的,因为你只想影响第一个字符 -
它们是教科书问题集(教科书实际上是免费在线提供的),没有额外的学分
-
这里已经回答了同样的问题stackoverflow.com/questions/1892765/…
-
你为什么把
java.util.Scanner放在开头?
标签: java string subroutine capitalization