古罗马皇帝凯撒在打仗时曾经使用过如下方法加密军事情报,主要方法就是字母错位,下面这张图加密方法就是错三个位来实现加密功能java
(1) 设计思想:数组
(2) 程序流程图:加密
(3) 源代码:spa
package temp; import java.util.Scanner; public class Tast2 { public static char[] encrypation(String str) {//加密方法 char chararry[] = str.toCharArray();//把字符串转化为字符数组 for(int i =0; i< str.length(); i++) { //当读到字母表后3位时,加密后是字母表前三位 if(str.charAt(i) >= 88 && str.charAt(i) <= 90) {//大写时 chararry[i] = (char)(str.charAt(i) - 23); } else if(str.charAt(i) >= 120 && str.charAt(i) <= 122) {//小写时 chararry[i] = (char)(str.charAt(i) - 23); } //通常加密方法 else { chararry[i]= (char) (str.charAt(i) + 3) ; } } return chararry; } public static char[] deciphering(String str) {//j解密方法 char chararry[] = str.toCharArray(); for(int i =0; i< str.length(); i++) { //当读到字母表前3位时,加密后是字母表后三位 if(str.charAt(i) >= 65 && str.charAt(i) <= 67) {//大写时 chararry[i] = (char)(str.charAt(i) + 23); } else if(str.charAt(i) >= 97 && str.charAt(i) <= 99) {//小写时 chararry[i] = (char)(str.charAt(i) + 23); } //通常解密密方法 else { chararry[i]= (char) (str.charAt(i) - 3) ; } } return chararry; } public static void main(String[] args) { Scanner imput1 = new Scanner(System.in); Scanner imput2 = new Scanner(System.in); System.out.println("*****************************"); System.out.println("*****加密字符串输入---1---"); System.out.println("*****解密字符串输入---2---"); System.out.println("*****************************"); System.out.print("请输入:"); int flag = imput1.nextInt(); System.out.print("请输入一个英文字符串:"); String string = imput2.nextLine(); if(flag == 1) { System.out.print("通过加密后为:"); for(int i =0;i <string.length(); i++) { System.out.print(Tast2.encrypation(string)[i]); } } if(flag == 2) { System.out.print("通过解密后为:"); for(int i =0;i <string.length(); i++) { System.out.print(Tast2.deciphering(string)[i]); } } imput1.close(); imput2.close(); } }
(4) 结果截图:设计
附录:String类型经常使用方法整理:code
(1)String.equals():blog
例:str1.equals(str2);若是字符串st1的内容与字符串str2内容相同,则返回true,不然返回falseip
(2)String.length():ci
例:str1.length();返回字符串str1的长度,或者说是大小字符串
(3)String.charAt():
例:str1.charAt(index);返回字符串str1中下标为index的字符,下标从0开始计数
(4)String.getChars():
例:str1.getChars(0,5,charArray,0);把字符串str1中从下标0开始到下标5结束的子串拷贝到字符数组charArray中,字符数组的起始下标为0
(5)Sting.replace():
例:str1.replace(oldChar,newChar);返回一个新字符,它拥有与字符串str1相同的字符,可是把每个oldCase字符都替换为newCase字符
(6)Sting.toUpperCase():
例:str1.toUpperCase();返回一个新字符,它拥有与字符串str1相同的字符,可是把全部的小写字母都转换成了大写
(7)Sting.toLowerCase():
例:str1.toLowerCase();返回一个新字符,它拥有与字符串str1相同的字符,可是把全部的大写字母都转换成了小写
(8)Sting.trim():
例:str1.trim();返回一个新字符,它拥有与字符串str1相同的字符,可是删除了字符串str1的先后空白字符,(空白字符包括空格、制表符以及转行字符)
(9)String.toCharArray():
例:chararray[] = str1.toCharArray();把字符串str1转换成字符数组,并保存在chararrayp[]中