package com.accp.caesar;
public class CaesarCypher {
private int transNumber;
public CaesarCypher(int transNumber) {
this.transNumber = transNumber % 26;
}
public String encode(String str) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(ch >= 'a' && ch <= 'z') {
char newChar = (char) ('a' + (ch - 'a' + transNumber + 26) % 26);
sb.append(newChar);
}
else if(ch >='A' && ch <= 'Z') {
char newChar = (char) ('A' + (ch - 'A' + transNumber + 26) % 26);
sb.append(newChar);
}
else {
sb.append(ch);
}
}
return sb.toString();
}
public String decode(String str) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(ch >= 'a' && ch <= 'z') {
char newChar = (char) ('a' + (ch - 'a' - transNumber + 26) % 26);
sb.append(newChar);
}
else if(ch >='A' && ch <= 'Z') {
char newChar = (char) ('A' + (ch - 'A' - transNumber + 26) % 26);
sb.append(newChar);
}
else {
sb.append(ch);
}
}
return sb.toString();
}
}
package com.accp.caesar;
import java.util.Scanner;
public class CypherSystem {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
CaesarCypher cc = new CaesarCypher(-33);
do {
int choice = 0;
do {
System.out.println("1. 加密, 2. 解密, 3. 退出");
System.out.print("请选择: ");
if (sc.hasNextInt()) {
choice = sc.nextInt();
}
sc.nextLine(); //不管刚才的读取是否成功都清除所有输入
}
while (choice < 1 || choice > 3);
if(choice == 3) {
System.exit(0);
}
System.out.print("请输入字符串: ");
String str = sc.nextLine();
switch (choice) {
case 1:
System.out.println("加密后的字符串: " + cc.encode(str));
break;
case 2:
System.out.println("解密后的字符串: " + cc.decode(str));
break;
}
}
while (true);
}
}
public class CaesarCypher {
private int transNumber;
public CaesarCypher(int transNumber) {
this.transNumber = transNumber % 26;
}
public String encode(String str) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(ch >= 'a' && ch <= 'z') {
char newChar = (char) ('a' + (ch - 'a' + transNumber + 26) % 26);
sb.append(newChar);
}
else if(ch >='A' && ch <= 'Z') {
char newChar = (char) ('A' + (ch - 'A' + transNumber + 26) % 26);
sb.append(newChar);
}
else {
sb.append(ch);
}
}
return sb.toString();
}
public String decode(String str) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(ch >= 'a' && ch <= 'z') {
char newChar = (char) ('a' + (ch - 'a' - transNumber + 26) % 26);
sb.append(newChar);
}
else if(ch >='A' && ch <= 'Z') {
char newChar = (char) ('A' + (ch - 'A' - transNumber + 26) % 26);
sb.append(newChar);
}
else {
sb.append(ch);
}
}
return sb.toString();
}
}
package com.accp.caesar;
import java.util.Scanner;
public class CypherSystem {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
CaesarCypher cc = new CaesarCypher(-33);
do {
int choice = 0;
do {
System.out.println("1. 加密, 2. 解密, 3. 退出");
System.out.print("请选择: ");
if (sc.hasNextInt()) {
choice = sc.nextInt();
}
sc.nextLine(); //不管刚才的读取是否成功都清除所有输入
}
while (choice < 1 || choice > 3);
if(choice == 3) {
System.exit(0);
}
System.out.print("请输入字符串: ");
String str = sc.nextLine();
switch (choice) {
case 1:
System.out.println("加密后的字符串: " + cc.encode(str));
break;
case 2:
System.out.println("解密后的字符串: " + cc.decode(str));
break;
}
}
while (true);
}
}