您好我的作业问题:
为name字段传递的参数不能为null,
并且不能是空字符串或仅由组成的字符串
空白。如果参数作为参数传递
3要么为null,要么为空/空白字符串,将字段设置为
DEFAULT_POOL_NAME
否则,请格式化值
正确(删除空格,大写第一个字母,
在将其存储在实例中之前,将其余部分设置为小写)
变量
这是我的代码:
public Pool(String newName, double newVolumeLitres, double newTemperatureCelsius, double newPH, double newNutrientCoefficient) {
if (newName != null && newName.trim().length() > 0) {
name = formatNameTitleCase(newName.trim());
} else {
name = DEFAULT_POOL_NAME;
}
}
我收到一条说明
的错误消息cannot find symbol - method formatNameTitleCase(java.lang.string)
答案 0 :(得分:0)
要大写第一个字母,请将子字符串设置为大写,如下所示:
somestring.substring(0, 1).toUpperCase() + somestring.substring(1);
在你的情况下,它将是:
String trimmed = newName.trim();
name = trimmed.substring(0, 1).toUpperCase() + trimmed.substring(1);
(我假设name
已初始化)
substring()
获取字符串的某个指定部分并捕获它。 substring(0, 1)
将获得该单词的第一个字符,并使用toUpperCase()
将其大写。然后substring(1)
将从第一个字符开始接收字符串的其余部分,并将其与大写字母连接,从而产生以下输出。从,
"examplestring"
要,
"Examplestring"
我还建议使用toLowerCase()
来确保其余为小写。最后,我可能会尝试使用try / catch来确保字符串索引确实存在。最终代码是“故障安全”:
String trimmed = newName.trim();
try {
name = trimmed.substring(0, 1).toUpperCase() + trimmed.substring(1).toLowerCase();
} catch(StringIndexOutOfBoundsException e) {
e.printStrackTrace();
System.out.println("String was not at least one character!");
}
trim()
只能删除尾随空格,因此请使用replaceAll()
方法,如下所示:
str.replaceAll("\\s+", "");
这将替换所有空格,包括换行符(\ n)。它使用正则表达式(正则表达式)来匹配所有空格并替换为空。
以下是删除所有空白并将第一个字母大写的代码:
try {
name = newName.substring(0, 1).toUpperCase() + newName.substring(1).toLowerCase();
} catch(StringIndexOutOfBoundsException e) {
e.printStrackTrace();
System.out.println("String was not at least one character!");
}
name.replaceAll("\\s+", "");
请考虑阅读完整的帖子。
public String formatNameTitleCase(String oldName) {
try {
name = oldName.substring(0, 1).toUpperCase() + oldName.substring(1).toLowerCase();
} catch(StringIndexOutOfBoundsException e) {
e.printStrackTrace();
System.out.println("String was not at least one character!");
return "failed";
}
name.replaceAll("\\s+", "");
return name;
}
答案 1 :(得分:0)
您可以使用第三方库来检查空白案例。 例如 : Apache常见的lang jar有StringUtils类。 你可以使用
StringUtils.isNotBlank(字符串);
答案 2 :(得分:0)
这就是你想要的。
public Pool(String newName, double newVolumeLitres, double newTemperatureCelsius, double newPH, double newNutrientCoefficient) {
//Removing White spaces
if(newName!=null) {
newName = newName.replaceAll(" ", "");
}
//Check for empty and null
if(newName==null || newName.isEmpty()) {
newName=DEFAULT_POOL_NAME;
}
//Setting the first to uppercase and the rest to lower case
else {
newName = newName.substring(0, 1).toUpperCase() + newName.substring(1).toLowerCase();
}
}