2017-05-22 50 views
2

これは私が持っているものです。Javaで配列文字を右にシフトするにはどうすればよいですか?

class encoded 
{ 
    public static void main(String[] args) 
    { 
     String s1 = "hello"; 
     char[] ch = s1.toCharArray(); 
     for(int i=0;i<ch.length;i++) 
     { 
      char c = (char) (((i - 'a' + 1) % 26) + 'a'); 
      System.out.print(c); 
     } 
    } 
} 

は、これまでのところ私は、文字列を配列に変換されてきた、と私はシフトする方法を働いてきたが、今私がこだわっています。コードは、ch[0]で開始した文字を読んで、右(iからh)に1をシフトし、それが終わりに達するまで、配列内の各文字のための同じをする私が欲しいもの

です。

今、私のコード出力はopqrsです。 ifmmpを出力します。私はint i = ch[0]forループでint i = 0を交換する場合、それはiでスタートんが、それはちょうど私がそれをiとしてh、出力を読みたいijklmno...

入力、fとしてe、出力を読んで、というようになるまで配列の最後に到達します。

+1

i - 'a' + 1を交換してください。変数 'i'の目的は何ですか?あなたは "シフト"したい文字をどこに保存していますか? –

答えて

4

あなたはあなたのコードの出力は同じである出力の長さ、を除いて、入力String(井戸に依存しないことを意味し、あなたのループにi番目の文字の代わりにループインデックスiを使用しています入力の長さ)。

変更

char c = (char) (((i - 'a' + 1) % 26) + 'a'); 

char c = (char) (((ch[i] - 'a' + 1) % 26) + 'a'); 
+0

ありがとう! 2人の間で何が変わったか説明してください。 –

+0

@AliNisarが編集しました – Eran

0

にあなたが何をしているかについて考えてみてch[i] - 'a' + 1

class encoded { 

    public static void main(String[] args) 
    { 
    String s1 = "hello"; 
    char[] ch = s1.toCharArray(); 
    for(int i=0;i<ch.length;i++) 
    { 
     char c = (char) (((ch[i] - 'a' + 1) % 26) + 'a'); 
     System.out.print(c); 
    } 
    } 
} 
関連する問題