問題 1: ここに 2 つのコード スピナーがあります。コード A が間違って実行されます。しかし、何が悪いのかわかりません。
問題 2: コード B は正しいのですが、「A」を削除する必要がある理由がわかりません。次に、fmod の後に「A」を追加します。「A」の効果は?削除後にエラーが発生するのはなぜですか?
コード A (ch + キー) % 26 )
コード B ('A' + ((ch -'A' + キー) % 26))
public void run() {
setFont("Arial-PLAIN-24");
String line = readLine ("Enter line: ");
int key = readInt ("Enter key: ");
String siphertext = encryptCaesar(line , key);
println("The result is: " + siphertext);
String newplain = encryptCaesar(siphertext , -key);
println("newplain:" + newplain);
}
private String encryptCaesar(String str , int key){
if(key < 0){
key = 26 - ( -key % 26 );
}
String result = "";
for(int i = 0; i < str.length(); i++){
char ch = str.charAt(i);
result += encryptChar(ch,key);
}
return result;
}
private char encryptChar(char ch, int key){
if(Character.isUpperCase(ch)){
return ( (char) ('A' + ((ch -'A' + key) % 26)) );
}
return ch;
}