我在做一个计算机科学的小项目。我正在编写一个代码来测试一个字符串输入是回文,还是一个前后相同的短语,例如。向后读时,“racecar”=“racecar”。我的“扫描仪”输入没有被记录?什么都没有返回
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter a palindrome or something...: ");
String myLine = keyboard.nextLine();
Palindrome test = new Palindrome();
test.setPaly(myLine);
System.out.println(test);
我的扫描仪进入一个变量“MYLINE”这是我从代码的最后块扔进另一个文件中我等一段代码,通过一个toString称为通过System.out.println(test)
:
public void setPaly(String setp)
{
in = setp;
boolean b1 = true;
int x = 0;
while(x<in.length())
{
b1 = Character.isLetter(x);
if (b1 != false)
{
paly = paly + in.substring(x, x+1);
}
x++;
}
}
看,'paly'和'in'都是预先初始化的,但那不是我的问题......我的问题来了:'paly'从来没有被实际覆盖。这是为什么?我完全不理解...所以请给我解释一下,而不仅仅是给我一个答案。
我使用codeboard.io做这一点,正因为如此,你可以看看我的全部代码(如果它实际上不是代码在所有这些块的一部分)这里:(https://codeboard.io/projects/33278?view=21.1-2.0): 链接
如果你想让'setPaly()'决定一个输入是否是回文,那么你应该返回一个'boolean'响应,而不是保留'void'。另外,我没有看到'in'正在被初始化。 –
在该循环中及其周围添加一些临时system.out.prints,以便跟踪in,x,paly等的值。这是一种很好且简单的调试技术。它将揭示发生了什么。 –
'Character.isLetter(x);'...你可能想要记住'x' ***真***是......提示:不是一封信。 (至少不适用于短字符串) – Tom