编程仍然很新,我正在使用一些练习来理解基础知识。这是我的任务:
给定一个字符串,返回由前2个字符组成的字符串(如果存在),但是只有当它是' o'并包括 仅当它是' z',所以" ozymandias"收益率" oz"。 startOz(" ozymandias")→" oz" startOz(" bzoo")→" z" startOz(" oxx")→ " O"
我已经看过解决方案了解它,但无法弄清楚为什么我自己尝试使用substring而不是' charAt生成不同的输出。为什么我自己使用子字符串的code1给出了不同的输出然后我会使用' charAt? Code1是我自己的尝试,code2是给定的解决方案。在附件中,您将找到两个输出。谢谢!
//code 1 own attempt
public String startOz(String str) {
String answer = "";
if ( str.length() >= 1 && str.substring( 0 ).equals("o")) {
answer = answer + str.substring(0);
}
if ( str.length() >= 2 && str.substring( 1 ).equals("z")) {
answer = answer + str.substring(1);
}
return answer;
}
//code 2 the solution
public String startOz(String str) {
String answer = "";
if ( str.length() >= 1 && str.charAt( 0 ) == 'o') {
answer = answer + str.charAt(0);
}
if ( str.length() >= 2 && str.charAt( 1 ) == 'z') {
answer = answer + str.charAt(1);
}
return answer;
}
答案 0 :(得分:1)
这是substring(int index)
的文档public String substring(int beginIndex)
返回一个新字符串,该字符串是此字符串的子字符串。子串 从指定索引处的字符开始并扩展到 这个字符串的结尾。
因此,对于第一个if
,您获得ozymandias
并且它不等于o
。
正确的是使用:
substring(int beginIndex, int endIndex)
文档:
public String substring(int beginIndex, int endIndex)
返回一个新字符串,该字符串是此字符串的子字符串。子串 从指定的beginIndex开始并延伸到at处的字符 index endIndex - 1.因此子字符串的长度为
endIndex的-的beginIndex。
链接:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring%28int%29
答案 1 :(得分:0)
读取String#substring
上的javadocs - 您需要添加一个额外的参数来指定子字符串的结尾,否则它将返回字符串的其余部分。