编程思路:通过参数传入要加密的字符。凯撒密码器只是通过移动的位数,这里不妨通过命令行参数传入。由于移动的位数为整数,因此使用Integer.parseInt( )方法进行了转换。由于字母表中共26个字符,所以移位前先将移动的位数(key)和26取模。由于Java中字符和整型可自动转换,因此将字符加上一个正整数即代表在字母表中右移多少位。如果移动的位数是负值,则代表在字母表中左移多少位。就得出来了。
编程流程图
:
加密方法:
实验代码:
import java.util.Scanner; public class G { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner input = new Scanner(System.in); String q=new String(); System.out.println("请输入一个字符串:");//字符串的输入 q=input.nextLine(); char []a=q.toCharArray(); System.out.println("请问需要加密还是解密?(加密输入1,解密输入0)");//需要解密或者是加密 int qq = input.nextInt(); if(qq==1)//加密 { for(int i=0;i<q.length();i++)//从第一个字符开始操作 { a[i]=(char)(a[i]+3);//每一个字符加三 if((a[i]>‘Z‘&&a[i]<‘a‘)||a[i]>‘z‘) { a[i]=(char)(a[i]-26);//当字符位于Z和a之间或者大于z时字符减26 } } String q1=new String(a); System.out.println("加密后的字符串为:"+q1);//输出加密后的字符串 } if(qq==0)//解密 { for(int i=0;i<q.length();i++)//从第一个字符开始操作 { a[i]=(char)(a[i]-3);//每一个字符加三 if((a[i]>‘Z‘&&a[i]<‘a‘)||a[i]<‘A‘) { a[i]=(char)(a[i]+26);//当字符位于Z和a之间或者小于A时字符加26 } } String q1=new String(a); System.out.println("解密后的字符串为:"+q1);//输出加密后的字符串 } } }
实验截图:
string类函数使用说明:
1. String.equals():判断两个字符对象的内容是否相等;
2. length():求字符或字符串的长度。字符串长度用length();数组可以用length;
3. charAt():得到字符串中某个位置的字符值。索引范围是从0到length() - 1;
4. getChars():把某位置开始的子串复制到某个数组中;
5. replace():子串替换用法就是将字符串中的某子串替换为另一个子串;
6. toUpperCase():小写转换为大写 ;()内可以是String char类型的变量名也可以是“字符串”。
7. toLowerCase():大写转换为小写; ()内可以是String char类型的变量名也可以是“字符串”。
8. trim():消除首尾空格;
9. toCharArray():将字符对象转化为char数组;
时间: 2024-10-07 06:32:46