我更感兴趣的是为什么返回函数不起作用。不是关于优化或我的思考方法。
我尝试了一个简单的程序来递归检查字符串是否是回文的。
package palindrom;
public class PalindromString {
public static boolean isPalindrom(String myText) {
char f = myText.charAt(0);
char l = myText.charAt(myText.length() - 1);
if (f != l) {
return false;
}
else {
if (myText.length() > 1) {
isPalindrom(myText.substring(1, myText.length() - 1));
} else {
return true;
}
}
return true;
}
public static void main(String[] args) {
String text = "cococbc";
System.out.println(isPalindrom(text));
}
}
对于第一步,程序获取第一个“c”字符和最后一个字符,并将它们进行比较,然后再次调用函数,这次使用“ococb”字符串。该函数取“o”字符和“b”,它比较它们,发现它们不相等,它转到“返回false”声明,但它返回真?
你能帮我吗?我很想明白它为什么会这样:|。
它看到它们不相等,它进入“返回false;”语句,但它返回true?
是的,isPalindrom("oCocb")
返回false
,但是当递归调用返回时,您忽略了它的返回值,因此isPalindrom("coCocbc")
返回true
。您需要返回isPalindrom(myText.substring(1,myText.length()-1))
才能修复此问题。
除了这个问题,您还应该将条件更改为要求myText.length()至少为3,否则您可能会将空
String'传递给递归调用,因为您正在删除第一个和最后一个字符。
if (myText.length() >= 3) {
return isPalindrom(myText.substring(1, myText.length() - 1));
} else {
return true;
}
完成更改后,您应该移除最后的< code >返回值true,将无法再访问它。
您还可以考虑在开头添加对< code>null或空< code >字符串的检查,以便在调用< code>null或空< code >字符串时不会引发异常。
我使用的是Laravel,并有一个查询,它使用列的进行选择: 我已经安装了mysqldn,AFAIK Laravel使用。 但是是一个字符串,不管列是什么类型。(它是一个整数列) 另外,如果我这样做: < code>foo_bar以整数形式返回。
这可能是最简单的事情之一,但我没有看到我做错了什么。 我的输入包括第一行带有数字(要读取的行数),一堆带有数据的行和最后一行只带有\n。我应该处理这个输入,在最后一行之后,做一些工作。 我有这样的意见: 为了读取输入,我有以下代码。 我的问题是为什么我不打印任何东西?程序读取第一行,然后什么也不做。
以下endpoint以字符串形式返回用户名。 我如何构造它以返回一个json对象,该对象包含一个键,该键的值为该字符串(例如,{“user”:“joeuser”})?
问题内容: 看到这个游乐场:http : //play.golang.org/p/dWku6SPqj5 基本上,我正在使用的库将a作为参数接收,然后需要从字节数组中获取。在幕后,该参数是一个与字节数组的json结构匹配的结构,但该库没有对该结构的引用(但它确实具有对相应的reflect.Type through的引用)。 为什么json包无法检测基础类型?由于某种原因,它会返回一个简单的映射,而不
问题内容: 我正在尝试读取(位于Javascript源的同一文件夹中)的内容,并使用以下代码显示它: 的内容创建于: 测试Node.js readFile() 我得到这个: 问题答案: 从文档: 如果未指定编码,则返回原始缓冲区。 这可能解释了。指定一个有效的编码,例如作为文件名之后的第二个参数。如,
我试图运行Spring启动应用程序,这将返回我静态文件夹上的超文本标记语言静态文件,问题是:每次我加载页面:127.0.0.1我得到字符串"bakara",而不是超文本标记语言文件bakara.html.,当我加载127.0.0.1/bakara.html我得到bakara.html文件 pom.xml: 应用属性: HomeController.java: 项目结构: