字符串加密
一、 程序设计思想
(1) 输出提示,是选择加密还是解密;定义flag,输入选择;
(2) 定义int i;int c(存放加密或解密后的字符的ASCII);String S(存放输入的字符串),s(存放加密后或解密后的字符串);
(3) 如果flag==1,输入要加密的字符串,然后利用for循环,取到每一个字符,然后ASCII加3(但是 x,y,z变成a,b,c),用c存放加密后的字符的ASCII,然后然后经过强制类型转换变成字符加到s上;
(4) 如果flag==2,输入要解密的字符串,然后利用for循环,取到每一个字符,然后ASCII减3(但是a,b,c变成x,y,z),用c存放解密后的字符的ASCII,然后经过强制类型转换变成字符加到s上;
(5) 输出s;
二、 程序流程图
三、 源代码
import java.util.Scanner; public class Caessar {public static void main(String[] args) {// 信1605-3 20163693 王晓丹System.out.print("1 加密情报 2 解密情报,请选择(1/2):");Scanner input=new Scanner(System.in);int flag=1;flag=input.nextInt();//输入选择if(flag!=1&&flag!=2)//判断输入是否正确 {System.out.println("输入错误!");System.exit(0);}int i=0;int c;String S="";String s="";if(flag==1){System.out.print("请输入需要加密的情报: ");S=input.next();for(;i<S.length();i++){c=(int)(S.charAt(i)+3);//取到当前位置的字符并加3if(c<=125&&c>=123)//x,y,z加3之后是123-125 {c=c-26;//x,y,z变成a,b,c }if(c<=93&&c>=91)//X,Y,Z加3之后是91-93 {c=c-26;//X,Y,Z变成A,B,C }s=s+(char)c;//加密后的字符依次相加 }System.out.println("加密后的情报是:"+s);}else{System.out.print("请输入需要解密的情报: ");S=input.next();for(;i<S.length();i++){c=(int)(S.charAt(i)-3);//取到当前位置的字符并减3if(c<=96&&c>=94)//a,b,c减3之后是94-96 {c=c+26;//a,b,c变成x,y,z }if(c<=64&&c>=62)//A,B,C减3之后是62-64 {c=c+26;//A,B,C变成X,Y,Z }s=s+(char)c;//解密后的字符依次相加 }System.out.println("解密后的情报是:"+s);}}}
四、 结果截图
“联级”调用
public class StringTest {public static void main(String[] args) {String str="abc";String result=str.trim().toUpperCase().concat("defg");System.out.println(result);}
public class TestLianJi {public static void main(String[] args) {//信1605-3 20163693 王晓丹MyCounter counter1=new MyCounter(1);MyCounter counter2=counter1.increase(100).decrease(2).increase(3);System.out.println(counter2.data);} } class MyCounter {int data;public MyCounter(){}public MyCounter(int d){data=d;}public MyCounter increase(int d){MyCounter counter=new MyCounter();counter.data=data+d;return counter;}public MyCounter decrease(int d){MyCounter counter=new MyCounter();counter.data=data-d;return counter;} }
String类的使用
1. String.equals()
equals的作用:用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型
equals的基本使用:boolean a= b.equals(c);
String类型比较不同对象内容是否相同,应该用equals,因为==用于比较引用类型和比较基本数据类型时具有不同的功能。
2. length()
取到字符串的长度,例如s.length()返回的是字符串s的长度;
3. charAt()
取字符串指定位置的字符,例如c=”exc”,c.charAt(1)=’b’
4. getChars()
将这个字符串字符复制到目的字符数组getChars(srcBegin,srcEnd,dst,dstBegin),其中srcBegin是字符串中要拷贝的第一个字符的位置,srcEnd是字符串中要拷贝的最后一个字符的位置,dst是目的字符数组,dstBegin是开始粘贴字串的下标
5. replace()
replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar替换此字符串中出现的所有oldChar得到的。如 果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,用来表示与此 String 对象表示的字符序列相等的字符序列,除了每个出现的 oldChar 都被一个 newChar 替换之外。
6. toUpperCase()
此方法返回转换为大写的字符串。
例如:
String str1 = "This is YiiBai";
System.out.println("string value = " + str1.toUpperCase());
str1 = "www.yiibai.com";
System.out.println("string value = " + str1.toUpperCase());
输出结果是:
string value = THIS IS YIIBAI
string value = WWW.YIIBAI.COM
7. toLowerCase()
返回把原字符串所有大写字母都变成小写的字符串。
例如:
String strVariable = "This is a STRING object";
strVariable = strVariable.toLowerCase();
输出结果是:
this is a string object
8. trim()
去掉字符串首尾的空格。
String a=" hello world ";
String b="hello world";
System.out.println(b.equals(a));
a=a.trim();//去掉字符串首尾的空格
System.out.println(a.equals(b));
输出结果是:
a: hello world,false
a:hello world,true
9. toCharArray()
将字符串对象中的字符转换为一个字符数组
例如:
String myString="abcd";
char myChar[]=myString.toCharArray();
System.out.println("myChar[1]="+myChar[1]);
输出结果:
myChar[1]=b