我正在學習Java。我正在構建這個Palindrome識別器,並使用兩個帶有字符的數組,我認爲我用我發現的其他東西得到了很好的實現,但是我正在打破我的頭腦,理解爲什麼它不能按預期工作。發生了什麼:迴文識別器
- 「回教美國國家航空航天局的聖誕老人」,迴文檢查爲迴文。
- 「我不知道,什麼」,而不是迴文,檢查不是迴文。
- 「不是迴文」,而不是一個迴文,支票作爲迴文。
我基本上需要一些幫助來了解到底在哪裏我的代碼錯了。謝謝!
/*
"A Santa at Nasa" is an example of palindrome.
*/
import java.util.Scanner;
public class Palindrome
{
public static void main (String[] args)
{
boolean isPalindrome = false;
Scanner kb = new Scanner(System.in);
System.out.println("Enter a string:");
String userInput = kb.nextLine();
userInput = userInput.trim().replaceAll(" ", "").toLowerCase();
char[] array = new char[userInput.length()];
char[] reverseArray = new char[userInput.length()];
int i = 0;
int j = userInput.length();
do {
i++;
j--;
array[i] = userInput.charAt(i);
reverseArray[j] = userInput.charAt(j);
if (array[i] != reverseArray[j])
{
isPalindrome = false;
}
else
{
isPalindrome = true;
}
} while (j > i);
if(isPalindrome)
{
System.out.println("It's a palindrome.");
}
else
{
System.out.println("Not a palindrome.");
}
}
}
這聽起來像是一個熟悉使用調試器的好機會。在調試過程中,當您逐行瀏覽代碼並觀察行爲和數值時,邏輯偏離您期望的是什麼點? – David
我認爲這個錯誤來自''++'在'do'循環中。你在獲得角色價值之前增加。 –
我想@ Bathsheba的主要問題,但你也可能想在循環結束時增加你的計數器 - 你沒有檢查第一個字符,但你*將*檢查第一對'j> i'在循環退出之前失敗。 – hugh