我在做一個計算機科學的小項目。我正在編寫一個代碼來測試一個字符串輸入是迴文,還是一個前後相同的短語,例如。向後讀時,「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