2016-11-25 3 views
1

タイトルに記載されているように、私が書いたjavaのメソッドに問題があります。これはコードです:メソッドは、Javaではcharの代わりにintを返します

public static char shift(char c, int k) { 

    int x = c; 

    int d = c - 65 + k; 
    int e = c - 97 + k; 

    if (x > 64 && x < 91 && d >= 0) { 

     c = (char) (d % 26 + 65); 

    } else if (x > 96 && x < 123 && e >= 0) { 

     c = (char) (e % 26 + 97); 
    } 


    if (x > 64 && x < 91 && d < 0) { 

     c = (char) ((d + 26) % 26 + 65); 

    } else if (x > 96 && x < 123 && e < 0) { 

     c = (char) ((e + 26) % 26 + 97); 
    } 

    return c; 
} 

アルファベットで文字をシフトしたいと思います。

String s = " "; 
    String text = readString(); 
    int k = read(); 

    for (int i = 0; i < text.length(); i++) { 

     char a = text.charAt(i); 
     int c = a; 

     int d = a - 65 + k; 
     int e = a - 97 + k; 

     if (c > 64 && c < 91 && d >= 0) { 

      a = (char) (d % 26 + 65); 

     } else if (c > 96 && c < 123 && e >= 0) { 

      a = (char) (e % 26 + 97); 
     } 
      if (c > 64 && c < 91 && d < 0) { 

      a = (char) ((d + 26) % 26 + 65); 

     } else if (c > 96 && c < 123 && e < 0) { 

      a = (char) ((e + 26) % 26 + 97); 
     } 

     s += a; 
    } 

    System.out.println(s); 
} 

方法シフトが、私はこのようにそれを使用して整数を返し、なぜ私は理解していない:コードは、私はこの(シーザーChiper)のようにそれを使用する場合は完璧に動作シフト(「C」、5); hのdec番号である104を返します。私はJavaの初心者で、遅い人です。

ありがとうございます。

+1

charはint toooです –

+0

どのようにshift()の戻り値を使用しましたか? –

+0

私は知っていますが、文字を返すメソッドが必要です。私が書いた場合:char a = shift( 'c'、5); System.out.println(a);それは私に104を示し、 'h'を示さない。 – Ralu

答えて

0

誤って2文字のユニコードを追加している可能性があります。 あなたはこのような何かを行う場合に、この現象が発生することができます

System.out.println('b' + 'a'); 

か、あなたのケースで

System.out.println(shift('c', 5) + 'a'); 

は、望ましい結果を得るため、印刷前に、文字列に文字を変換するには:

String result = Character.toString(shift('c', 5)); 
System.out.println(result + 'a'); 

または

System.out.println(shift('c', 5) + "a"); 
関連する問題