2

私は高校にいて、これは私が持っている割り当てです。皆さんは私のリーグから外れていますが、私は喜んで学び、理解したいと思っています。私はあちこちを見回しましたが、見つけることができたのは、まだ知らない複雑な構文だけでした。これは私が持っているものです。文字列を取り、それを逆にします。大文字を無視するようにできましたが、シンボルを無視する方法がわかりません。私が持っている数字はANSI文字からのもので、使用しているテキストパッドのリストがあります。厳しいことを恐れないでください。私はこれが苦手で、改善したいだけなので、頑張ってください。

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;
    }
}
4

5 に答える 5

0

これは高校の課題なので、いくつかの指針を示します。自分で理解してください。

  1. 何を含める/除外するかを考えてから、コードを記述します。複雑な文字エンコーディングを処理したくない限り、<or演算子を使用して char 変数を比較できることに注意してください。>

  2. 文字列は、実際には文字のシーケンスであり、1 つずつ比較または並べ替え、含めたり除外したりできます。

  3. メソッドは、多くのことではなく、1 つのことだけを行う必要があります。あなたのreverseString方法を見てください。これはtoUpperCase同時に文字列に対して実行しています。プログラムがより複雑になると、この方法を実行するのは簡単ではなくなります。

最後に、たとえば回文チェックに大文字を含めたい場合は、次のようなコードを試してください。

char[] toCheck = fwd.toCharArray();
for (char c : toCheck) {
  if (c >= 'A' && c <= 'Z') {
    result = result + c;
  }
}

あなたの要件に応じて、これはあなたが望むことをするかもしれません。何か違うものが必要な場合は、上記のヒントをご覧ください。

于 2013-11-07T07:10:57.567 に答える
0

そのようなことをするよりも、いくつかの文字セットから文字列を取り除きたい場合

clearString=targetStringForStripping.replaceAll([type_characters_for_stripping],"");

これにより、角かっこ内に指定するすべての文字が削除されます。さらにあります。文字だけを残すようにしたい場合 (回文では文字以外は何も重要ではないため、スペースは重要ではないため)、あらかじめ定義された文字セット - 文字を使用できます。そうすればすべてを結論づける

clearString=targetStringForStripping.replaceAll("[\w]","");

また

clearString=targetStringForStripping.replaceAll("[^a-zA-Z]","");

最初の例では白い文字を含む明確な文字列が得られ、2 番目の例では文字のみが得られます。解決に最適な状況isPalindrom

于 2013-11-07T07:07:46.203 に答える
0
if((fwd.charAt(i)>=65 && fwd.charAt(i)<=90)||(fwd.charAt(i) >= 48 && fwd.charAt(i) <= 58));

最後にセミコロンがあります。だから私は条件がここで役に立たないと思う

于 2013-11-07T07:07:58.127 に答える