如何解决startsWithString word,char c中的参数
我正在努力理解为准备几天后的考试而收到的练习任务。这是我到目前为止的代码:
/**
* Check if the first letter in this word matches the given letter c
* @param word a word
* @param c - a character a-z upper or lower case
* @return true if first letter in word matches c
*/
@Override
public boolean startsWith(String word,char c) {
}
我应该编写能通过我在单独文件中具有的测试要求的代码。所有测试代码都已经提供给我,我的唯一任务是编写代码,如果String单词中的第一个字母与char c匹配,则返回true。字母是大写还是小写都没有关系,因为带有测试代码的文件包含处理此问题的代码。 总结一下: 我想我要的是帮助您了解我到底应该做什么?我尝试按照这种方式写一些东西,但是我认为这是不正确的,我认为我完全忽略并忽略了大部分任务:
@Override
public boolean startsWith(String word,char c) {
if (word.startsWith(word,c)) {
return true;
} else {
return false;
}
}
解决方法
这里的问题是您误解了startsWith()
方法的参数。第一个参数是前缀。那应该是您的角色c
。第二个参数是开始寻找该前缀的偏移量。在这种情况下,您希望该值为0。您真正想要的是word.startsWith(Character.toString(c),0)
。您的原始代码没有引发编译时异常的原因是因为字符c
被当作数字对待,并且为了匹配{{ 1}}方法。
了解在哪里可以找到要使用的Java标准库版本的JavaDoc,这对您很有好处。 Java 10的代码在这里:https://docs.oracle.com/javase/10/docs/api/index.html?overview-summary.html,其他几个版本的代码也在附近。您可以使用这些方法来查找感兴趣的类,例如java.lang.String
,以确定它们提供的方法,并了解这些方法的参数和行为的详细信息。
尤其是,您可能会考虑检查rostopic list
的几种String
方法,在这种情况下,您会发现它们确定是否在其上调用startsWith()
对象 以特定字符串或与特定模式匹配的字符串开头。这不是您尝试使用与调用参数匹配的方式的方法。
另一个答案描述您可以对问题应用String
,但这不是您的唯一选择。仔细研究可用的方法会发现几种从String.startsWith()
中获取单个char
的方法,例如String
方法。如果确实不需要担心大小写(这对我来说令人惊讶),那么就我个人而言,我倾向于提取第一个字符(索引为0)并将其与感兴趣的字符进行比较。也就是说,我将从这里开始:
charAt()
其余的作为练习。
,string startsWith oracle中的方法文档:
startsWith(字符串前缀,整数偏移量)
测试此子字符串是否 以指定索引开头的字符串以指定的开头 前缀。
但是您需要测试第一个字符是否以字符c开头。因此,您可以使用startsWith(String word)(来自String)的重载版本。这是我的2个选择:
选项1:
@Override
public boolean startsWith(String word,char c) {
return word.charAt(0) == c;
}
选项2:
@Override
public boolean startsWith(String word,char c) {
return word.startsWith(String.valueOf(c);
}
请注意,您可以通过检查答案中提到的“ word”参数无效性来改进此方法。例如:
@Override
public boolean startsWith(String word,char c) {
return word != null && word.startsWith(String.valueOf(c);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。