作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对编程很陌生。你能告诉我为什么会输出:
string index out of range: -1
class Palindrome {
public static String reverse(String s) {
if (s == "") {
return s;
}
else {
return reverse(s.substring(1,s.length())) + s.charAt(0);
}
}
public static void main(String args[]) {
System.out.print(reverse("galskjdf"));
}
}
最佳答案
使用
class Palindrome {
public static String reverse(String s) {
if ("".equals(s)) {
return s;
} else {
return reverse(s.substring(1,s.length())) + s.charAt(0);
}
}
public static void main(String args[]) {
System.out.print(reverse("galskjdf"));
}
}
参见How do I compare strings in Java?和 Reverse a string in Java可能也会有帮助(即使您可能将上述代码作为编程练习来完成,但知道通常人们会使用现有的工具来完成此类事情也没有什么坏处)。
使用原因
"".equals(s)
而不是
s.equals("")
如下:如s
是 null
,后者会抛出 NullPointerException
(因为您尝试在 null
上调用方法),而当您在“正确”字符串上调用方法时,前者仍然有效,另请参阅 Gracefully avoiding NullPointerException in Java然而,我记得也有人批评这种方法,因为这可能会让你错过 s
的事实。是 null
当它不应该的时候(在这种情况下你应该明确检查处理这种情况)。
关于java - 回文程序输出超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22716105/
我想开发一个 Skype 机器人,它将用户名作为输入,并根据用户输入以相反的字符大小写表示hello username。简而言之,如果用户输入他的名字 james,我的机器人会回复他为 Hello J
我是一名优秀的程序员,十分优秀!