【发布时间】:2023-01-11 12:11:54
【问题描述】:
我想知道如何编写一个小的 java 方法,允许用户输入一个句子,程序将返回句子中的所有回文。顺便说一句:回文是一个前后相同的词。首先,我创建了一种方法来检查用户输入的单词是否为回文。代码如下所示。现在,我必须弄清楚用户何时输入单词的长度。例如: 请输入回文:[用户输入:racecar] 请输入字号:[用户输入3] 这是你的回文:cec [如你所见,新单词的长度大小为 3] 我不是特别确定如何获得新的回文。有人可以帮我吗?请不要使用数组!
这是我写的一个小方法,如果输入的单词是回文,它返回 true(这不是我的问题要问的,我认为这是我可以建立的东西。当然我会返回一个字符串,所以我会使返回类型为“void”。)
public boolean printPalindrome(String sentence, int size)
{
String reverseStr = "";
for(int i = (sentence.length()-1); i>=size; i--)
{
reverseStr += sentence.charAt(i);
}
if(sentence.toLowerCase().equals(reverseStr.toLowerCase()))
return true;
else
return false;
}
【问题讨论】:
-
给定句子 ie racecar,然后你想根据给定的长度提取一个更小的回文?我想你先检查一下,原来的句子是奇数还是偶数?如果是奇数,如果长度是奇数,则只能返回有效的较短回文,同样适用于偶数。那么你想检查字符串的中点是多少?并依赖于此,例如使用
.substring(midpoint-x, midpoint+x) -
你的
public boolean printPalindrome(String sentence, int size)应该只要检查sentence是否是回文。因此,它不需要size参数。 (此外,它可以是static,因为它不使用任何实例变量,并且您不需要实例来使用它。)现在,创建另一个具有循环的方法。在每次迭代中,调用printPalindrome传递用户输入的substring。 -
题外话:风格建议:带有
boolean的方法可以返回布尔表达式:return sentence.toLowerCase().equals(reverseStr.toLowerCase()); -
@OldDogProgrammer 你是对的,我之前正在尝试一些东西,但我忘了删除参数!非常感谢,这很有帮助!!!
标签: java string for-loop substring palindrome