1
    public class newString {
   public static void main (String args[]){
      String title = "Book";
      String title1;
      title1 = title;

      for(int i = 0; i < title.length(); i++){
         for (int x = 0; x<title1.length(); x++){
            if (title.charAt(i+x) == title1.charAt(x)){
               System.out.print(title.charAt(0,1));
            }
         }
      }
   }
}

ここで何が間違っているのか本当にわかりません。私がする必要があるのは、「Book」を含む「title」という文字列を定義し、「title1」という 2 番目の文字列を作成することです。title の内容を title1 に格納するコードを作成する必要がありますが、1 文字おきに格納する必要があります。例: title1 には「Bo」が含まれている必要があります。私は何を間違っていますか?

4

3 に答える 3

5

これは、操作が少ないループ ソリューションです。i が偶数かどうかをチェックする代わりに、2 だけインクリメントします。

String title1 = "Some title";
String title2 = "";
for (int i = 0; i < title1.length(); i += 2)
{
  title2 += title1.charAt(i);
}
于 2013-11-04T15:25:08.983 に答える
1

アルゴリズムが間違っています。ソース文字列から n 番目ごとの文字を抽出する必要があるようです。次に例を示します。

String source = "Book";

最終結果は「Bo」になるはずです

アルゴリズムは次のようになります。

  1. 元の文字列の各文字を反復処理し、必要に応じてストライドを使用します。この場合、ストライドを 2 にする必要があります (1 ずつインクリメントするのではなく、必要なストライドだけインクリメントします)。
  2. そのインデックスの文字を取得し、2 番目の文字列に追加します

最終結果は、n 番目の文字ごとに保持される文字列になります。

于 2013-11-04T15:21:28.317 に答える
0

何をしようとしているのかよくわかりませんが、何をしているのかはわかります。ループ構造は次のことを行います。

  • i = 0 の場合、両方の文字列のすべての文字を比較します (0 + n = n なので、内側のループは x - title1.length() から始まります)。
  • i = 1 の場合、最初の文字を除くすべての文字を比較します (サイズ x の場合、1 + n = x - 1 の比較)。
  • i =2 の場合、x / 2 文字を比較 (サイズ x の場合、2 + n = x / 2)
  • i = 3 の場合、x / 3 文字を比較
  • ... 等々
  • System.out.print(title.charAt(0,1))コンパイルさえすべきではありません。 charAt(int)正しい呼び出しです。また、タイトルの長さが 0 より大きい場合、これは常に 1 文字の文字列 (タイトルの最初の文字) を出力します。また、タイトルを別の文字列に再割り当てしない限り、常に同じになります。

また、このコードは、i = title.length() - 1 および x > 0 の場合に常にIndexOutOfBoundsException をスローします。title.charAt(i+x)

于 2013-11-04T15:29:32.963 に答える