加密文档

实验要求编写一个算法加密一串英文字串。

设计思想:对于一个字符串,我们可以用String.charAt()方法依次取出其中的字符元素,组成一个字符数组。由于字符可以转化为short类型变量进行计算,所有将从字符串中取出的字符经过一个特定的运算后在转化为char类型,然后覆盖原来的字符变量。将字符数组中的每一个字符都经过相同的转化方式,然后用这个字符数组初始化一个字符串,输出这个字符串,便是加密后的字符串。当需要解密的时候,只需要取出去每个字符进行相反的运算就行了。

程序流程图:

程序源代码:

import javax.swing.JOptionPane;

public class A_classTest {

public static void main(String[] args) {

// TODO Auto-generated method stub

String str = JOptionPane.showInputDialog(null);

char arry[] = new char[str.length()];

arry = str.toCharArray();

for(int i = 0; i < str.length(); i++){

short x = (short)arry[i];

x += 20;

if(x > 'z')

x -= 26;

arry[i] = (char)x;

}

String str1 = new String(arry);

JOptionPane.showMessageDialog(null, str1,"加密后为",JOptionPane.INFORMATION_MESSAGE);

}

}

实验结果截图:

String.equals()方法的源代码:

public boolean equals(Object anObject) {

//判断是否是和自己比较

if (this == anObject)
{

return true;

}

//判断传过来的anObject是否是String类型的实例

if (anObject
instanceof String) {

String
anotherString = (String) anObject;

int n =
value.length;

if (n ==
anotherString.value.length) {

char v1[] =
value;

char v2[] =
anotherString.value;

int i = 0;

//逐个字符进行比较

while (n-- != 0)
{

if (v1[i] !=
v2[i])

return false;

i++;

}

return true;

}

}

return false;

}

在判断两个字符串是否相等的时候,首先判断这两个字符创是否符合“==”的条件。然后判断两个字符串长度是否相等,长度不相等的字符串当然不会相等。然后逐个字符逐个字符比较两个字符串中是否有不相同的字符,只要有一个不相等的字符出现,结束比较,放回false。

String类中的一些方法的使用方法:

length():返回字符串的长度。调用时必须以String类的实例对象调用,例如str.length()。

charAt():去字符串中指定位置上的字符,括号中的参数范围是0到字符串长度减一。

getChars():将字符串中的部分字符存到一个字符数组中。该方法有4个参数,参数列表为int srcBegin,int srcEnd,char[] dst, int dstBegin, 参数列表表示取本字符串中位置下标为srcBegin开始到位置下标为srcEnd-1结束的所有字符,字符放在字符数组dst中位置下标为dstBegin开始的后续位置。

replace():字串替换,参数列表:charsequence target,charsequence replacement;

target表示本子符串中需要特换的子字符串,replacement表示代替的字符串。替换过程从本字符串的开始到末尾中所有符和条件的子字符串。

toUpperCase():将本字符串中的所有字符都转化为大写字符。

toLowerCase():将本字符串中的所有字符都转化为小写字符。

trim():
去除本字符串头尾的空字符。

toCharArray():将本字符串转化为一个字符数组。

TheSixthWeekJavaText的更多相关文章

随机推荐

  1. Twitter Storm:单机环境的安装与配置

    Twitter Storm:单机环境的安装与配置 好久没写博客了,这一段时间一直被导师push着做毕业设计.由于目前的方向偏向于图像识别检索,毕设打算做一个基于分布式计算平台的图像检索系统,查阅相关资 ...

  2. 设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用

    设置角色遗留问题和为权限设置角色以及EasyUI Tabs的使用 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo ...

  3. hibernate添加spring 事务管理注意问题记录

    今天弄了一天的hibernate添加事务的问题 首先,建立的是一个java工程,把hibernate添加进工程里,很容易就可以写一个增删改查的方法.索性就多加点东西,把接口,抽象类也加到里面,自己看着 ...

  4. mongDB

    MongoDB[第一篇]MongodDB初识   NoSQL介绍 一.NoSQL简介 NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库. 非关系型数据库主要有这些特点:非关系型的 ...

  5. VS2012编译LibZip库

    LibZip库是解压缩zip文件的C库. 中文的网站目前还没有找到相关的编译方法,找了一篇英文文档加上自己的实验修改了一下: 编译步骤如下: 首先先下载CMake,我下载的是2.8版本. libzip ...

  6. 可供VC调用的QT编写的界面DLL方法

    一般直接编写的QT动态库是无法被Windows下的VC6.0等调用的. 如下步骤 第一步:必须要在QT界面库源码下包含qtwinmigrate的源码包和库,网上可下载到. 第二步:在QT的proc文件 ...

  7. [置顶] Oracle学习经验谈

    经常遇到朋友问oracle学习难不难,怎么才能成为高手等等,我想结合我的个人经验简单说几点: 1.打好基础,由浅入深 学习Oracle不能急于求成,寄希望于一天成为一个大侠.学习有个过程,应该由浅入深 ...

  8. avalon1.5+中组件的定义方式

    avalon在1.5之后引入新的组件定义和使用方式,其总的宗旨是为了使定义和使用组件更加简单 组件库的概念 首先,需要注意的是,引入了组件库的概念(也可以理解为namespace),之后定义的组件必须 ...

  9. 软件各种版本的含义!例如RC,M,GA等等

    RC版本   RC:(Release Candidate)   Candidate是候选人的意思,用在软件上就是候选版本.Release是发行.发布的意思.Release.Candidate.就是发行 ...

  10. trove 开发者阅读翻译

    介绍 Trove为OpenStack提供数据库的服务.它的设计运行完全符合OpenStack,目标是让用户能快速.轻松地利用关系数据库的特点,没有负担的处理复杂的管理任务.云用户和数据库管理员可以根据 ...