0

文字列を取り、各文字 (スペースを含む) を +n ずつ増やして、その新しい文字列を出力したいとしましょう。例えば:

文字列 1 = '気をつけて'

n = 7

したがって、文字列 2 は = 'svvrgvba' になります。

それは理にかなっていますか?とにかく、ここから降りる方法がわかりません。値を増やす前に、元の文字列を構成文字に分割する必要がありますnか? または、次のようなものを使用できますstring.charAt(0) + nか?

4

5 に答える 5

0

Caesar コーディングはこれを使用します。

実際、各文字を個別に見てループし、Maroun が言ったように各文字に値を追加することができます :)

于 2013-11-06T18:12:45.530 に答える
0

これを試して!!!

int n = 7;
n = n%26; //This will solve your problem if n is a large number like 1000
String str = "look out";
char[] arr = str.toCharArray();
int ascii = 0; 
int newAscii = 0;
String newStr ="";
char c;
for(int i=0; i<arr.length; i++) {
  ascii = arr[i];
  if(ascii == 32)
    newAscii = 97+n-1;
  else if((ascii+n)>122)
    newAscii = 97+(n-1-(122-ascii));
  else
    newAscii = ascii+7;
  c = (char)newAscii;
  newStr += c;
}
System.out.println(newStr);

間に大文字を使用することも考えている場合は、このelse if条件も使用してください。

else if(ascii<=90)
    {
        if((ascii+n)>90) 
          newAscii = 65+(n-1-(90-ascii));
        else
          newAscii = ascii+n;
    }
于 2014-04-02T12:06:59.800 に答える
0

「ROT7」を探しています。ROT13のウィキペディア記事はこちら

于 2013-11-06T18:01:16.637 に答える
0

アスキーテーブルを見てください:

l → 108  Adding 7 will result in 115 decimal value, which is the char s
o → 111  Adding 7 will result in 117 decimal value, which is the char v
o → 111  ..
k → 107  ..
  → 32   ..
o → 111  ..
u → 117  Adding 7 will result in 124, but you exceed 122 (z) by 2, so you convert it to b
t → 116  ..

各文字svvrgvbaに追加すると取得できます。ただし、 に追加する7ときなどのケースに注意する必要があります(実際には の後に 10 進数の値が 1 つ得られます。その場合は、 に切り替える必要があります)。7tza

于 2013-11-06T17:58:39.787 に答える