2017-02-25 5 views
-1

以下のコードでは、次のエラーが発生しており、その理由を特定できません。ハッシュマップを使用せずに文字列の文字を並べ替えるにはどうすればよいですか?

(最初の文字、最後の文字、2番目の文字、2番目の最後の文字、3番目の文字など)の順番で、入力した単語( "ポーランド語")を並べ替えようとしています。出力は "Phosli"である必要があります。

Screenshot

更新されたコード

public static String encodeTheWord(String word1) 
{ 
    int b = 0; 
    int e = word1.length()-1; 
    String word2 = ""; 
    for (int i=0; i<e; i++) 
    { 
     word2 = word2 + word1.charAt(b) + word1.charAt(e); 
     b+=1; 
     e-=1; 
    } 

    System.out.println(word2); 

    return (word2); 
} 
+0

テキストのスクリーンショットを投稿しないでください。テキスト自体を投稿するだけです。 – ajb

+0

私はそれを念頭に置いて、申し訳ありません – daniel11

答えて

1

として電子を定義しているため

word1.charAt(e); 

、順序の文字が051423になるので、bの最大値は2であり、最小値はeであり、5から3です。したがって、ループはeをデクリメントし、bを2回増やす必要があります(したがって、word1.length()/2回のループを実行します)。また、

int e = word1.length();

はする必要があるであろう:不均一な長さの言葉のために

int e = word1.length() - 1;

を(word1.length() % 2 > 0)あなたは、余分なチェックが必要か、真ん中の文字を繰り返すことになります。

+0

あなたが正しいです、最初の解決策は "磨き"と他の偶数の単語にのみ働いた。しかし、「水」は包みとして出てきた。あなたのソリューションを今すぐ試してみてください。 – daniel11

+0

申し訳ありませんが、あなたの解決策を働かせることができません。あなたは精緻化できますか?質問に私の更新されたコード(不均一な言葉でしか動かない)を投稿してください! – daniel11

+1

あなたのループ終了条件 'i 0)word2 = word2 + word1.charAt(b); 。 –

1

あなたのループが間違っているために、あなたは、インデックスで文字を取得することができますまでword1.length() - 1 ...

は、

for (int i=0; i<word1.length()-1; i++) 
である必要があります。同じことが、このために適用される

...あなたは文字(ポーランド)のさえ量と単語についてword1.length()

+0

助けてくれませんでした。私はまだエラーが発生しています.... – daniel11

+0

同じことが適用されます:word1.charAt(e); eはword1.length()でなければなりません - 1 –

+1

ああ、ありがとう! – daniel11

関連する問題