[英]Not able to figure out the solution for Java program to check whether string is palindrome
[英]Java, cant figure out how to strip symbols from a String for a Palindrome
我在高中,這是我的任務,你們不在我的支持下,但我願意學習和理解。 我到處看,但是我所能找到的只是語法,我還不知道。 這就是我所擁有的,它需要一個字符串並將其反轉。 我設法使它忽略大寫字母,但我不知道如何使它忽略符號。 我那里的數字來自ANSI字符,在textpad上正在使用的列表。 不要害怕苛刻,我對此並不擅長,我只想改進。
import java.util.Scanner;
public class PalindromeV2
{
public static void main(String[] args)
{
//declare
Scanner sc = new Scanner(System.in);
String fwd, rev;
String result;
//input
System.out.println("What word would you like to Palindrome test?");
fwd = sc.next();
rev = reverseString(fwd);
result = stripPunctuation(fwd);
if(stripPunctuation(rev).equals(stripPunctuation(fwd)))
{
System.out.println("That is a palindrome");
}
else
System.out.println("That is not a palindrome");
}
public static String reverseString(String fwd)
{
String rev = "";
for(int i = fwd.length()-1; i >= 0; i--)
{
rev += fwd.charAt(i);
}
return rev.toUpperCase();
}
public static String stripPunctuation(String fwd)
{
String result = "";
fwd = fwd.toUpperCase();
for(int i = fwd.length()-1; i >= 0; i--)
{
if((fwd.charAt(i)>=65 && fwd.charAt(i)<=90)||(fwd.charAt(i) >= 48 && fwd.charAt(i) <= 58));
result = result + fwd.charAt(i);
}
return result;
}
}
您可以將其用作檢查條件
if (Character.isLetter(fwd.charAt(i)) {
// do something
}
這將檢查以確保該字符是字母,因此您不必擔心大小寫,數字或其他符號。
如果您想從某些字符集中刪除字符串,而不要做類似的事情
clearString=targetStringForStripping.replaceAll([type_characters_for_stripping],"");
這將刪除您將在方括號內提供的所有字符。 還有更多。 如果您只想說只留下字母(因為在回文中,除了字母,其他都沒關系-空格並不重要),那么您只能使用預定義字符集-字母。 總結一切,如果你做
clearString=targetStringForStripping.replaceAll("[\\w]","");
要么
clearString=targetStringForStripping.replaceAll("[^a-zA-Z]","");
在第一個示例中,您將獲得帶白色字符的清晰字符串,而在第二個示例中,將僅獲得字母。 isPalindrom
分辨率的isPalindrom
情況。
if((fwd.charAt(i)>=65 && fwd.charAt(i)<=90)||(fwd.charAt(i) >= 48 && fwd.charAt(i) <= 58));
你終於有了分號。 所以我認為如果條件沒有用
由於這是一項高中作業,因此我只給出一些建議,您可以自己解決。
考慮一下要包含/排除的內容,然后編寫代碼。 請記住,只要您不想處理復雜的字符編碼,就可以使用<
或>
運算符比較char變量。
字符串實際上只是一個字符序列,您可以逐個比較,重新排序,包含或排除字符。
方法只能做一件事,而不是很多事。 看看您的reverseString
方法。 這是同時對字符串執行toUpperCase
。 如果您的程序變得更加復雜,則這種處理方式將不容易遵循。
最后,如果您例如只想在回文檢查中包括大寫字母,請嘗試如下代碼:
char[] toCheck = fwd.toCharArray();
for (char c : toCheck) {
if (c >= 'A' && c <= 'Z') {
result = result + c;
}
}
根據您的要求,這可能會做您想要的。 如果您想要不同的東西,請看一下我上面給出的提示。
爪哇高爾夫?
public static String stripPunctuation(String stripThis) {
return stripThis.replaceAll("\\W", "");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.