package edu.secretcode;
import java.util.Scanner;
/**
* Creates the secret code class.
*
* @author
*
*/
public class SecretCode {
/**
* Perform the ROT13 operation
*
* @param plainText
* the text to encode
* @return the rot13'd encoding of plainText
*/
public static String rotate13(String plainText) {
StringBuffer cryptText = new StringBuffer("");
for (int i = 0; i < plainText.length() - 1; i++) {
char currentChar = plainText.charAt(i);
currentChar = (char) ((char) (currentChar - 'A' + 13)% 26 + 'A');
cryptText.append(currentChar);
if (currentChar <= 'A' && currentChar >= 'Z'){
cryptText.append(plainText);
}
}
return cryptText.toString();
}
/**
* Main method of the SecretCode class
*
* @param args
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (1 > 0) {
System.out.println("Enter plain text to encode, or QUIT to end");
Scanner keyboard = new Scanner(System.in);
String plainText = keyboard.nextLine();
if (plainText.equals("QUIT")) {
break;
}
String cryptText = SecretCode.rotate13(plainText);
String encodedText = SecretCode.rotate13(plainText);
System.out.println("Encoded Text: " + encodedText);
}
}
}
在静态字符串rotate13方法和if语句中,如果字符小于'A'或大于'Z',则使cryptText字符与明文字符相同。我的问题是如何使加密文本字符与明文字符相同?我所拥有的不起作用,我完全被困在这里。任何建议都非常感谢。
您的情况不对,请更改
if (currentChar <= 'A' && currentChar >= 'Z')
if (currentChar < 'A' || currentChar > 'Z')