加密文档

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

设计思想:对于一个字符串,我们可以用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. How to make workflow chart using several tools in Linux?

    Just as what I said, I usually use yED to make workflow chart and markdown as the language to write ...

  2. HDFS中文件的压缩与解压

    HDFS中文件的压缩与解压 文件的压缩有两大好处:1.可以减少存储文件所需要的磁盘空间:2.可以加速数据在网络和磁盘上的传输.尤其是在处理大数据时,这两大好处是相当重要的. 下面是一个使用gzip工具 ...

  3. 正则表达式引擎:nfa的转换规则。

    正则表达式引擎:nfa的转换规则. 正则到nfa 前言 在写代码的过程中,本来还想根据龙书上的说明来实现re到nfa的转换.可是写代码的时候发现,根据课本来会生成很多的无用过渡节点和空转换边,需要许多 ...

  4. var, object, dynamic的区别以及dynamic的使用

    var, object, dynamic的区别以及dynamic的使用 理解C# 4 dynamic(1) - var, object, dynamic的区别以及dynamic的使用 2013-06- ...

  5. java--九九乘法表

    /* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:邱学伟 * 完成日期:2013 年 7 月 ...

  6. [Android笔记1]Activity+Layout+Button

    线性布局(LinearLayout)是指view对象在父view中可按水平或垂直方向线性排列. 相对布局(RelativeLayout)是指view对象的排列依赖于各对象之间的相对位置. 下面是展示两 ...

  7. 12157 - Tariff Plan

      Ampang Communications & Mobile (ACM) provides telecom services for various types of users. Sin ...

  8. [置顶] 遵循Java EE标准体系的开源GIS服务平台之二:平台部署

    传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 传送门 ☞ GoF23种设计模式 ☞ 转载请注明 ☞ http://blog.csd ...

  9. C语言之函数的介绍

    函数的介绍 遇到的问题: 1.代码看起来特别多,不简洁 2.修改起来非常麻烦,需要所有用到的地方都修改 函数就可以解决上述这两个问题 函数可以理解为一个打包带,就是把一段代码打包起来,用到的时候只要写 ...

  10. C语言之分支结构 if(一)

    一 程序的三种基本结构 顺序结构:程序从上往下依次执行,这个叫顺序结构 分支结构:有选择的执行或者不执行某段代码 循环结构:重复的执行某段代码 二 分支结构之if 最简单的俩种用法 (tips: if ...