代码改变世界

字串加密

2017-10-26 14:26  默默不语  阅读(269)  评论(0编辑  收藏  举报

1.程序设计思想

①  定义一个类,在类中定义加密,解密的方法,后期可由用户选择进行加密操作还是解密操作。

②  在类中,数据成员为String类型的变量,构造函数有一个参数用于为数据成员赋值。

③  在加密函数中,将字符串转为字符数组,利用循环将数组中的每一个字符进行+、-操作,将其转换为加密后对应的字符,然后将加密后的字符串输出到屏幕。

④  解密函数与加密函数类似。

⑤  在主函数中,提示用户输入字符串后,定义对象,将用户输入的字符串作为其参数。

⑥  提示用户想要进行的操作(加密/解密),用户输入选项后,根据用户的选项调用相应的方法。

2.程序流程图

 

3.程序源代码

import java.util.Scanner;
public class StringEncryption {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("请输入字符串:");//提示用户输入字符串
        Scanner input=new Scanner(System.in);
        String letter="***";//对字符串进行初始化
        int choose=0;
        if(input.hasNextLine())//判断用户输入是否合法
        {
            letter=input.nextLine();//用户输入合法
        }
        else//用户输入不合法,报错并结束程序
        {
            System.out.println("输入错误!");
            System.exit(0);
        }
        Rome R=new Rome(letter);//定义对象
        System.out.println("请选择您要进行的操作:1.加密  2.解密");//提示用户选择想要进行的操作
        System.out.println("请选择:");
        if(input.hasNextInt())//判断用户输入是否合法
        {
            choose=input.nextInt();//输入合法
        }
        else//用户输入不合法,报错并结束程序
        {
            System.out.println("输入错误!");
            System.exit(0);
        }
        if(choose==1)//用户选择对字符串加密
        {
            R.encryption();//调用加密的函数
        }
        else if(choose==2)//用户选择对字符串进行解密
        {
            R.decryption();//调用解密的函数
        }
        else//用户输入错误,报错并结束程序
        {
            System.out.println("输入错误!");
            System.exit(0);
        }
    }

}

class Rome//定义Rome类实现加密和解密的功能
{
    String string;
    public Rome(String string)//构造函数对数据成员进行初始化
    {
        this.string=string;
    }
    
    public void encryption()//实现加密功能
    {
        char letter[]=new char[string.length()];//定义与字符串等长的数组
        letter=string.toCharArray();//将字符串转换为数组
        int i=0;
        for(i=0;i<string.length();i++)//将字符转换为加密后的字符
        {
            if((letter[i]>=65&&letter[i]<=87)||(letter[i]>=97&&letter[i]<=119))
            {
                letter[i]+=3;
            }
            else
            {
                letter[i]-=23;
            }
        }
        for(i=0;i<string.length();i++)//将加密后的字符串输出到屏幕
        {
            System.out.print(letter[i]);
        }
        
    }
    
    
    public void decryption()//实现加密功能
    {
        char letter[]=new char[string.length()];//定义与字符串等长的数组
        letter=string.toCharArray();//将字符串转换为数组
        int i=0;
        for(i=0;i<string.length();i++)//将字符转换为解密后的字符
        {
            if((letter[i]>=68&&letter[i]<=90)||(letter[i]>=100&&letter[i]<=122))
            {
                letter[i]-=3;
            }
            else
            {
                letter[i]+=23;
            }
        }
        for(i=0;i<string.length();i++)//将解密后的字符串输出到屏幕
        {
            System.out.print(letter[i]);
        }
        System.out.print("\n");
    }
    

}

4.结果截图