gpt4 book ai didi

Java 回文程序(我走上正轨了吗)?

转载 作者:行者123 更新时间:2023-11-29 05:11:12 26 4
gpt4 key购买 nike

我只有 6 个月的 Java 经验(而且我也是新来的)所以如果我的代码看起来不完全正确,请多多包涵。请注意,它仍在进行中。我正在尝试编写一个接受字符串并仅打印回文字符串的程序。

我应该:- 创建一个名为 isPalindrome 的方法,它有一个字符串参数和- 根据字符串是否为回文返回 boolean 值。然后- 修改主要方法以使用 isPalindrome 仅打印回文。

例如,如果我输入:“madam James apple mom timer”,它应该打印“madam”和“mom”。

这基本上就是我要编写的程序:例如:让我们使用“女士”这个词。该程序将检查第一个和最后一个字母是否匹配(“madam”)。如果这是真的,那么它将检查下一个字母,这次是“a”和“a”(“madam)。依此类推等等。

这是我目前的 Java 代码:

public class Palindrome 
{
private String theWord; //Error: The value of the field Palindrome.theWord is not used

public boolean isPalindrome( String theWord ) {
int firstPointer = 0;
int secondPointer = theWord.length() - 1;

for ( int i = 0; i < theWord.length( ); i++ ) {
if ( theWord.charAt[0] == theWord.charAt (theWord.length() - 1) ) { //Error: charAt cannot be resolved or is not a field
return true;
}
return false;
}
}


public static void main( String[] theWord ) {
Palindrome = new Palindrome( ); //Error: Palindrome cannot be resolved to a variable

for ( int i = 0; i < theWord.length; i++ ) {
while (firstPointer < secondPointer) { //Error: "firstPointer" cannot be resolved to a variable. "secondPointer" cannot be resolved to a variable
if ( theWord.charAt[0] == theWord.charAt (theWord.length() - 1) ) { //Error: charAt cannot be resolved to a variable or is not a field. Cannot invoke length() on the array type String[]
firstPointer++; //Error: "firstPointer" cannot be resolved to a variable
secondPointer++; //Error: "secondPointer" cannot be resolved to a variable
}
System.out.println(theWord);
}
}
}
}

如果能帮助我知道哪里出了问题,我们将不胜感激。请不要只给我正确的代码。我想弄清楚这一点。非常感谢。

**编辑:我现在已经将错误作为注释包含在代码中。顺便说一句,我正在使用 Eclipse。


-->**编辑 2:好的伙计们。到目前为止,我已经阅读了您的大部分答案并且能够更正我的大部分代码(到目前为止非常感谢大家)。我现在唯一有问题的部分是这部分:

if ( theWord.charAt(i) == theWord.charAt (theWord.length() - i - 1) ) {
leftPointer++;
rightPointer--;

我现在得到一个 “无法在数组类型 String[] 上调用 charAt(int)”“无法在数组类型 String[] 上调用 length()”。这些是剩下的仅有的两个错误,然后我将测试代码。我已经尝试解决它们一段时间了,但我仍然不完全确定这些错误是什么意思。

Eclipse 建议我将 theWord.charAt(i) 更改为 theWord.length,这不是我想要的。它还建议我从 length 中删除“( )”,但我认为这也不对。

最佳答案

查看您的 isPalindrome 方法:

if ( theWord.charAt(0) == theWord.charAt (theWord.length() - 1) 

在这里你总是比较第一个字符和最后一个字符。在每次迭代中,您应该比较不同的字符对,直到找到一对不匹配的字符,或者到达单词的中间。

您应该使用循环的 i 变量:

if ( theWord.charAt(i) == theWord.charAt (theWord.length() - i - 1) 

而返回值应该正好相反。如果发现一对不匹配的字符,则返回 false。仅当循环结束且未返回 false 时,您才返回 true

关于Java 回文程序(我走上正轨了吗)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28393233/

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