-1

問題が発生しています。回文チェックプログラムの疑似コードを書くように割り当てられました。私の問題は、疑似コードの割り当てで良い評価を得た一方で、自分の教育のために Java でコードを記述しようとしたときに、チェックintstring.

import java.util.Scanner;
public class palindromeCheck {

private static Scanner in;

public static void main(String[] args) {

    in = new Scanner(System.in);
    String forward;
    String reverse = "";
    int reverseCountdown;
    System.out.println("enter a string and I will tell you if its a palindrome");
    forward= in.next();
    int stringLength= forward.length();


    for(reverseCountdown = stringLength-1; stringLength>-1; stringLength--);
    reverse=reverse+forward.charAt(reverseCountdown);

    if(forward.equals(reverse))
        System.out.println("Bro you got a palindrome!");
    else
        System.out.println("Thats not a palindrome...");

    }
 }

私の哀れなスキルでそれを見つけることができる限り、私の問題は、私のforループで、文字値を文字列に1つずつ転写していることですが、すべてを取るコードソリューションを思い付くことができません文字; 1つを除いてすべてかかるようです。(または、おそらく私のエラーは別のものです。)しかし、コードが実行されると、それは私にはどのように見えますか? 0 または 1。

これを修正したり、より洗練されたチェック方法を理解したりする助けがあれば幸いです。

4

5 に答える 5

0

forループは次のようになります

    for (reverseCountdown = stringLength-1; reverseCountdown >=0; reverseCountdown--){ //have changed the loop variables here
                reverse  += forward.charAt(reverseCountdown);
    }

for ループの;最後にあるため、 for ループが空のステートメントで実行されていました ( ; のみが空のステートメントと見なされます)。それを削除して for ループを少し変更し、

あなたのforループの問題は、変数「reverseCountdown」をどこでも使用する必要がありましたが、うまくいきませんでしたStringLength--

StringBuilder を使用することも方法の 1 つです。文字列を逆にする組み込み関数がありますが、組み込み関数を使用してあなたに割り当てを与えた人が喜んでくれるかどうかはわかりません。

お役に立てれば!幸運を!

于 2015-06-11T03:46:39.147 に答える
0

これは疑似コードではありませんか?for ループの後にセミコロンがあるのはなぜですか?

私はそれを削除します。

それだけの問題ではありません。stringLengthではなくループチェックとしてreverseCountdownを使用する必要があり、reverseCountdownをデクリメントする必要があります。

for(reverseCountdown = stringLength-1; reverseCountdown >= 0; reverseCountdown--)
于 2015-06-11T03:43:04.977 に答える
0

StringBuilderJavaで使用するか、以下のように独自の実装を作成する方が良いと思いarrayます。

import java.util.Scanner;


public class PalindromeCheck {

private static Scanner in; 

public static void main(String[] args) {

    in = new Scanner(System.in);
    System.out.println("enter a string and I will tell you if its a palindrome");
    char[] arr = in.next().toCharArray();
    boolean bool = true;
    for(int i=0;i<Math.floor(arr.length/2);i++){
        if(arr[i] != arr[arr.length-1-i]){
            System.out.println("Not a palindrome");
            bool = false;
            break;
        }
    }
    if(bool){
        System.out.println("You got a palindrome");
    }
}
}

これは半分の時間しかループしないため、より効率的です。

于 2015-06-11T03:54:56.133 に答える
0

forループはセミコロンで終了します。

for(reverseCountdown = stringLength-1; stringLength>-1; stringLength--);
reverse=reverse+forward.charAt(reverseCountdown);

私はあなたが望んでいたと信じています(そしてあなたはテストして修正する必要がありますreverseCountdown

for(reverseCountdown = stringLength-1; reverseCountdown>-1; reverseCountdown--) {
   reverse=reverse+forward.charAt(reverseCountdown);
}

私は個人的にStringBuilderreverseメソッドがあるため)好きです

System.out.println("enter a string and I will tell you if "
        + "it's a palindrome");
String forward = in.next();
StringBuilder sb = new StringBuilder(forward);
sb.reverse();
if (sb.toString().equals(forward)) {
    System.out.println("Bro you got a palindrome!");
} else {
    System.out.println("Thats not a palindrome...");
}
于 2015-06-11T03:44:10.710 に答える