20145320《Java程序设计》第一次实验报告

北京电子科技学院(BESTI)实验报告

课程:Java程序设计

班级:1453

指导教师:娄嘉鹏

实验日期:2016.04.08 18:30

实验名称:Java开发环境的熟悉

实验内容:实现凯撒密码,并进行测试

实验代码如下:

  1. package experiment1;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Scanner;
  5. public class Experiment1 {
  6. String eStr = new String();// 加密字符串
  7. String dStr = new String();// 解密字符串
  8. public static void main(String[] args) {
  9. System.out.print("请输入密钥:");
  10. Scanner s = new Scanner(System.in);
  11. int key = s.nextInt() % 26; // %26的意义是获取密钥的偏移值
  12. Experiment1 ks = new Experiment1();
  13. ks.E(key);// 加密
  14. ks.D(key);// 解密
  15. }
  16. /**
  17. * 加密 公式
  18. */
  19. void E(int k) {
  20. try {
  21. System.out.println("请输入一段明文:");
  22. char b[];
  23. BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
  24. String str2 = br2.readLine();
  25. b = str2.toCharArray();//字符串转化为字符数组
  26. char ch = ' ';
  27. for (int i = 0; i < str2.length(); i++) {
  28. if (b[i] >= 'a' && b[i] <= 'z') {
  29. ch = (char) ((b[i] - 'a' + k) % 26 + 'a');
  30. }
  31. if(b[i] >= 'A' && b[i] <= 'Z'){
  32. ch =(char) ((b[i] - 'A' + k) % 26 + 'A');
  33. }
  34. eStr.append(ch);// 拼接字符串
  35. }
  36. System.out.println("密文为:"+eStr+" 密匙为:" + k);
  37. } catch (IOException e) {
  38. System.out.println(error.NogetMessage());
  39. }
  40. }
  41. /**
  42. * 解密 公式
  43. */
  44. void D(int k) {
  45. try{
  46. char b[];
  47. b = eStr.toString().toCharArray();//把里面不是字符串转化为字符串后再转化为字符数组
  48. char ch =' ';//初始化
  49. for (int i = 0; i < eStr.length(); i++) {
  50. if (b[i] >= 'a' && b[i] <= 'z') {
  51. ch = (char)((b[i] - 'a' + 26 - k)% 26 +'a');
  52. }
  53. if(b[i] >= 'A' && b[i] <= 'Z'){
  54. ch=(char)((b[i]-'A'+26-k)%26+'A');
  55. }
  56. dStr.append(ch);// 拼接字符串
  57. }
  58. System.out.println("明文:"+dStr);
  59. }catch (IOException e) {
  60. System.out.println(error.NogetMessage());
  61. }
  62. }

程序的核心算法:

  1. for (int i = 0; i < eStr.length(); i++) {
  2. if (b[i] >= 'a' && b[i] <= 'z') {
  3. ch = (char)((b[i] - 'a' + 26 - k)% 26 +'a');
  4. }
  5. if(b[i] >= 'A' && b[i] <= 'Z'){
  6. ch=(char)((b[i]-'A'+26-k)%26+'A');
  7. }

凯撒密码属于比较简单的密码,其核心算法实现起来比较简单,关键在于ascii码与字符的相互转换。

程序的结果截图:



特殊说明:密钥可以不为3,支持大小写、中间可有空格。

遇到的难题与解决方案:

1.

在c语言中有一个gets()可以让用户直接输入一段字符,我在想java应该也会有这样的方法,然后上网搜索果然有,如下这段就是输入明文的

  1. BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
  2. String str2 = br2.readLine();

InputStreamReader(System.in)方法继承于实例java.io.InputStreamReader

关于输入流java.io.InputStreamReader实例在第十章有介绍。

2.

又一次无意间忘记输入,出现了错误IOException然后想到第九章刚学的对错误的处理,就使用了try...catch语句。

3.

与c语言不一样的是,C语言无法直接定义字符串,要想收集字符串需要定义字符数组。但是java可以定义字符串使用String,但是也遇到一个问题,就是在加密过程中需要一个一个字符加密,不能直接加密字符串。后来通过百度得知语句str2.toCharArray是把字符串str2转化为字符数组,这样就能加密解密了。

4.

开始原本想用一个字符数组记录加密后的密文,但是不会把字符数组赋给字符串dStr,后来网上查到一dStr.append(ch)可以把字符ch一个个接到dStr中,很方便。

感想与总结:

对比于C语言,java确实非常好用,他的许多方法都十分方便。但是有很多方法都不太懂,所以花费在百度上的时间比较多。

20145320《Java程序设计》第一次实验报告的更多相关文章

  1. 20145205 《Java程序设计》实验报告五:Java网络编程及安全

    20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...

  2. 20145213《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145213<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDEA) 实验要求 使用JDK编译.运行简单的Java程序. 使用IDEA编辑.编译.运行.调试J ...

  3. 20145206邹京儒《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145206<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDEA) 实验内容及步骤 1.使用JDK编译.运行简单的Java程序: 建立实验目录: 在IDEA ...

  4. 20145221 《Java程序设计》实验报告四:Android开发基础

    20145221 <Java程序设计>实验报告四:Android开发基础 实验要求 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管 ...

  5. 20145221 《Java程序设计》实验报告三:敏捷开发与XP实践

    20145221 <Java程序设计>实验报告三:敏捷开发与XP实践 实验要求 以结对编程的方式编写一个软件,Blog中要给出结对同学的Blog网址 记录TDD和重构的过程,测试代码不要少 ...

  6. 20145221 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145221 <Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDEA) 实验要求 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调 ...

  7. 20145301《Java程序设计》实验报告一:Java开发环境的熟悉

    20145301<Java程序设计>实验报告一:Java开发环境的熟悉 课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 1.没有Linux基础的同学建议先学习& ...

  8. 20145212《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDE)

    20145212<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDE) 实验内容及步骤 1.命令行下的JAVA程序开发 建立并进入实验目录: 撰写简单的Hello ...

  9. 20145233韩昊辰 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145233 <Java程序设计>实验报告一:Java开发环境的熟悉 实验要求 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调试Java程序. 实验内容 ...

  10. 20145221 《Java程序设计》实验报告二:Java面向对象程序设计

    20145221 <Java程序设计>实验报告二:Java面向对象程序设计 实验要求 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

随机推荐

  1. HDU 4433 locker(SPFA+DP)

    题目链接 去年区域赛的题目,早就看过题目了,又是过了好久了... 这题状态转移,一看就知道应该是 线性的那种,不过细节真的不好处理,一直没想出怎么搞,期间也看过题解,好像没太看懂... dp[i][j ...

  2. 【poj2828】Buy Tickets

    Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...

  3. 【hdu】p1754I Hate It

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. 在VS2010中创建并引用dll(C#)

    一般情况下,如果在新建或添加时选择“windows应用程序”或“控制台应用程序”时,‎结果都会被编译成exe,而选择“类库”时就会被编译成dll.也可以在项目属性中更改其输出类型,如下图:       ...

  5. linux修改时区为中国时区(北京)

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  6. Hadoop_初识

    一. 什么是Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序. 充分利用集群的威力进行高速运算和存储. Hado ...

  7. mysqldump备份详解

    -A  备份所有-B  恢复时会自动创建库  (同时支持导出多个库  -B  db01 db02) -d  导出表结构 #库中有多个表导出时导出没加 –B参数,则要先导入结构,如果表结构没有备份,那就 ...

  8. document.body.scrollTop or document.documentElement.scrollTop

      用Javascript获取DOM节点相对于页面的绝对坐标时,需要计算当前页面的滚动距离,而这个值的获取又取决于浏览器. 在Firefox或Chrome浏览器的控制台可以查看document.bod ...

  9. Devexpress TreeList控件绑定显示父子节点对像

    今天一位同事咨询Devexpress TreeList控件绑定自动显示父子节点对像,但结果是不会显示带父子节点关系,而是将所有的节点作为父节点显示出来了,对像类的代码如下 public class I ...

  10. DateUtils

    package com.vcredit.ddcash.batch.util; import java.text.SimpleDateFormat;import java.util.Calendar;i ...