执行if语句和删除空格时出现错误消息

时间:2016-06-21 04:52:32

标签: java

您好我的作业问题:

为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)

3 个答案:

答案 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)。它使用正则表达式(正则表达式)来匹配所有空格并替换为空。

TL; DR

以下是删除所有空白并将第一个字母大写的代码:

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();
    }
}