2

単語または語句が回文かどうかをチェックするプログラムを作成しています。私は実際の「回文テスター」を理解しました。私が立ち往生しているのは、コンソールに「回文を入力してください...」とテキストを読み上げさせるために、コードのどこに何を配置するかです。IO で試してみましたが、うまくいきません。また、ループを作成して続行するにはどうすればよいですか? このコードは、一度に 1 つのみ許可します `public class Palindrome {

public static void main(String args[]) {  
  String s="";  
  int i;  
  int n=s.length(); 
  String str="";  

  for(i=n-1;i>=0;i--)  
   str=str+s.charAt(i);  

  if(str.equals(s))  
   System.out.println(s+ " is a palindrome");  

  else  System.out.println(s+ " is not a palindrome"); }

}
4

3 に答える 3

7

テキストを読むには、次のように Scanner クラスを使用する必要があります。

import java.util.*;

public class MyConsoleInput {

    public static void main(String[] args) {
        String myInput;
        Scanner in = new Scanner(System.in);

        System.out.println("Enter some data: ");
        myInput = in.nextLine();
        in.close();

        System.out.println("You entered: " + myInput);
    }
}

実際に回文チェックを行う前にこの概念を適用すると、その前に並べ替えられます。

複数のチェックを許可するためのループについては、キーワード (「exit」など) を指定してから、次のようにすることができます。

do {
    //...
} while (!myInput.equals("exit"));

明らかに、関連するコードが真ん中にあります。

于 2010-04-17T01:39:20.783 に答える
1

それはすでに与えられているので(したがってCW)、本当の答えではありませんが、私はisPalindrome()メソッドを(再)書くことに抵抗できませんでした;)

public static boolean isPalindrome(String s) {
    return new StringBuilder(s).reverse().toString().equals(s);
}
于 2010-04-17T03:42:57.123 に答える
0

もう 1 つの一般的なイディオムは、メソッドでテストをラップすることです。

private static boolean isPalindrome(String s) {
    ...
    return str.equals(s);
}

isPalindrome()次に、標準入力をフィルタリングして、各行を呼び出します。

public static void main(String[] args) throws IOException {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    String s;
    while ((s = in.readLine()) != null) {
        System.out.println(isPalindrome(s) + ": " + s );
    }
}

これにより、単一の行を簡単に確認できます。

echo "マダミマダム" | java MyClass

またはファイル全体:

java MyClass < /usr/share/dict/words
于 2010-04-17T03:25:19.707 に答える