gpt4 book ai didi

java - 弦对称程序

转载 作者:行者123 更新时间:2023-12-01 14:38:20 26 4
gpt4 key购买 nike

嘿,我需要一些帮助来找出我的程序无法运行的原因。问题是使用递归编写一个程序,在删除所有标点符号和空格后计算给定的文本是否是回文。虽然程序到目前为止已编译,但它返回的每个值都为 false。我们只允许更改 isSymmetrical 方法。我可以利用一切可能的帮助来尝试找出如何使这项工作成功。谢谢。

public class StringSymmetry {

public static boolean isSymmetrical(String inputText)
{
if(inputText.length() == 0 || inputText.length() ==1)
return true;

if(inputText.charAt(0) == inputText.charAt(inputText.length()-1))
return isSymmetrical(inputText.substring(1,inputText.length()-1));

return false;
}



public static void main(String[] args) {
String[] sampleData =
{ "Don't nod",
"Dogma: I am God",
"Too bad - I hid a boot",
"Rats live on no evil star",
"No trace; not one carton",
"Was it Eliot's toilet I saw?",
"Murder for a jar of red rum",
"May a moody baby doom a yam?",
"Go hang a salami; I'm a lasagna hog!",
"Name is Bond, James Bond"
};

for (String s : sampleData)
{
System.out.println("isSymmetrical (" + s + ") returns " + isSymmetrical(s));
}


}

}

最佳答案

问题是您没有对大小写、标点符号和空格进行任何检查。

你可以这样做的一种方法是这样的。具体细节取决于您可以在作业中使用的内容,但您可能打算按照这些思路做一些事情。

另外,请注意,如果您将默认区域设置设置为土耳其等不寻常的区域,则 toLowerCase 会出现问题。为了获得适当的稳健性,您需要指定一个区域设置,但这不是您在家庭作业中不必担心的事情。

  public static boolean isSymmetrical(String inputText)
{
inputText = inputText.toLowerCase();

if(inputText.length() == 0 || inputText.length() ==1)
return true;

if(!Character.isLetter(inputText.charAt(0)))
return isSymmetrical(inputText.substring(1,inputText.length()));

if(!Character.isLetter(inputText.charAt(inputText.length()-1)))
return isSymmetrical(inputText.substring(0,inputText.length()-1));

if(inputText.charAt(0) == inputText.charAt(inputText.length()-1))
return isSymmetrical(inputText.substring(1,inputText.length()-1));

return false;
}

关于java - 弦对称程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16258877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com