实验内容

  • 命令行下Java程序开发
  • IDEA下Java程序开发、调试
  • 练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序)
  • 实现凯撒密码,并进行测试

实验要求

使用JDK编译、运行简单的Java程序;

使用Eclipse 编辑、编译、运行、调试Java程序。

实验步骤

前期准备

预先安装好JDK,并配置好环境变量;

继续下载idealC-2016.1.1,安装完毕后在Eclipse界面中配置JDK,为后期运行Eclipse调试程序做准备。

需求分析

实现凯撒密码,并进行测试;

需要一个主类,设置主函数,提供输入、输出功能,实现加法密码加密解密;

需要一个加密类,一个解密类,提供对于输入的明文、密文和输入的密钥进行对应的加密、解密这样一个算法,而且可以供主函数调用;

设计

主类的设计:

该类不含主函数,供调用以及输出输出和跳转使用;

设计私有成员变量result和flag,result用来记录各个功能函数的计算结果,flag用来判断除法运算是否合法;

设计四个计算功能的函数,分别实现加减乘除功能,并通过this.result来返回计算结果,通过this.flag返回判断是否合法的结果;

设计两个取值功能的函数,因为result和flag是私有成员变量,不能由别的类直接进行取值,所以设计两个取值的函数,分别为getResult()和isFlag()。

主类的设计:

首先要定义接口:java.util.Scanner;,提供用户输入的功能;

定义主函数,记录三个输入变量,分别是左右操作数(double型),以及中间的运算符(字符串型);

定义主类类变量,实现调用加密、解密类的功能,针对所需要进行加密或是解密调用不同功能的功能函数,进而实现加密或是解密;

将结果进行输出。

代码实现 & 测试

Eclipse环境下开发:

依据题目,根据已学JAVA知识,进行不同块的代码编写。

主类代码:

```

package cc.openhome;

  import java.util.Scanner;
public class shiyan1_1 {
public static void main(String args[]) throws Exception {
System.out.println("输入[加密]进行加密[解密]进行解密,请选择");
Scanner c = new Scanner(System.in);// 第四章,P108创建Scanner对象
String s1 = c.nextLine(); // 获取本行的字符串
if (s1.equalsIgnoreCase("加密")) {// 第六章P181 判断变量s1与A是否相等,忽略大小
System.out.println("请输入明文:");
Scanner shuru = new Scanner(System.in);
String s = shuru.nextLine();
System.out.println("请输入密钥(PS:请牢记密钥):");
Scanner miyao = new Scanner(System.in);
int key = miyao.nextInt();// 将下一个输入项转换成int类型
Encryption(s, key);// 调用Encryption方法
} else if (s1.equalsIgnoreCase("解密")) {
System.out.println("请输入密文:");
Scanner shuru = new Scanner(System.in);
String s = shuru.nextLine();
System.out.println("请输入密钥:");
Scanner miyao = new Scanner(System.in);
int key = miyao.nextInt();
Decrypt(s, key);// 调用Decrypt方法
}
}
public static void Encryption(String str, int k) { // 加密
String string = "";
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= 'a' && c <= 'z') // 如果字符串中的某个字符是小写字母
{
c += k % 26; // 移动key%26位
if (c < 'a')
c += 26; // 向左超界
if (c > 'z')
c -= 26; // 向右超界
} else if (c >= 'A' && c <= 'Z') // 如果字符串中的某个字符是大写字母
{
c += k % 26;
if (c < 'A')
c += 26;// 向左超界
if (c > 'Z')
c -= 26;// 向右超界
}
string += c;// 将加密后的字符连成字符串
}
System.out.println(str + " 加密后为:" + string);
}
public static void Decrypt(String str, int n) {// 解密
int k = Integer.parseInt("-" + n);
String string = "";
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= 'a' && c <= 'z') // 如果字符串中的某个字符是小写字母
{
c += k % 26; // 移动key%26位
if (c < 'a')
c += 26; // 向左超界
if (c > 'z')
c -= 26; // 向右超界
} else if (c >= 'A' && c <= 'Z') // 如果字符串中的某个字符是大写字母
{
c += k % 26;
if (c < 'A')
c += 26;// 同上
if (c > 'Z')
c -= 26;// 同上
}
string += c;// 将解密后的字符连成字符串
}
System.out.println(str + " 解密后为:" + string);
}
} ```

调试

Eclipse中调试很简单,即可编译运行;

Eclipse在编译时发现错误后,软件会给各种不改变原逻辑的解决选项,所以出现错误后解决起来比较方便;

测试

进行测试时,进行了输入分别是大写、小写、大小写混合输入的明文、密文,程序发聩良好

其他(感悟、思考等,可选)

第一次实验,因为我之前用java编写过其他的程序,所以开始的时候不像第一次自己敲代码那样不知所措,而且我比较幸运的分到了这个我较为熟悉的题目,在开始设计时较为轻松,而且我设计的代码中借鉴许多我们之前所学章节内知识,在输入密文、明文和密钥时,用到了第四章的Scanner函数,进行字符串的输入,对于不同功能的跳转用到了所学的equals ,通过提前设好的判断字符串进行判断跳转,这个方法可以使用第十章所学的流进行替换,在本周博客中有提及。而且之前在C语言中的学习中恰好编写过类似的加法密码,所以写起来有所借鉴,但是java是类的调用,C语言中直接是函数的调用,两者有所区别。

本次实验我自己也有许多需要反思的地方,虽然设计思路比较清楚,但是开始在跳转地方卡住了,忘记了对输入对象的完全性比较,而且之后是变量的定义中,对于字符串的整合自己也之前也是不会,是在网络查找类似代码后才编写的string += c,而且因为自己对于代码也进行多次修改,有时候自己的修改后还不如修改前,但是因为之前一直在托管代码,这次编程软件崩溃也从备份处虽然不是完全修改好的代码, 但是因是自己修改的,所以重新修改时很快完成,也让我初次感到托管代码的好处,但是自己的码代码能力也要增强,虽然是一个简单的代码,也花费了不少的时间,码的过程中也需要各种翻阅资料,在之后的学习和实践需要加强。

PS:因为软件崩溃,之前运行时没及时截图,之后恢复后再编辑补上。

学习进度条

步骤 耗时 :100分钟 百分比
需求分析 10分钟 10%
设计 5分钟 5%
代码实现 45分钟 45%
测试 10分钟 10%
分析总结 30分钟 30%

参考资料

20145205 实验一 Java开发环境的熟悉的更多相关文章

  1. 实验一 Java开发环境的熟悉

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...

  2. 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...

  3. 实验一Java开发环境的熟悉

    实验一Java开发环境的熟悉 实验内容 •命令行下Java程序开发 •IDEA下Java程序开发.调试 •练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) •实现凯撒密码 ...

  4. 20145225《Java程序设计》实验一 Java开发环境的熟悉(Linux + Eclipse)

    20145225<Java程序设计> 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑 ...

  5. 20145208实验一 Java开发环境的熟悉

    20145208实验一 Java开发环境的熟悉 使用JDK编译.运行简单的java程序 命令行下程序开发 在命令行下建立实验目录,然后创建并进入该目录后的子目录. 编译并运行一个代码 使用IDEA 编 ...

  6. 实验一 Java开发环境的熟悉(Linux + Eclipse)

    学号 20175206 实验一 <Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实 ...

  7. 实验一 Java开发环境的熟悉(Linux + Idea) 20175301李锦然

    https://gitee.com/ShengHuoZaiDaXue/20175301.git 实验一 Java开发环境的熟悉(Linux + Idea) 实验内容 1.使用JDK编译.运行简单的Ja ...

  8. 2018-2019-2 实验一 Java开发环境的熟悉

    实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA编辑.编译.运行.调试Java程序 实验知识点 1. JVM.JRE.JDK的安装位置与区别: 2. 命令行运行javac:ja ...

  9. 20175208 实验一 Java开发环境的熟悉

    20175208 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张家华  学号:20175208 指导教师:娄嘉鹏 实验日期:2019年4月2日 实 ...

随机推荐

  1. wdcp安装memcached解决办法

    1.下载libevent-1.4.14b-stable.tar.gz和memcached-1.4.15.tar.gz这两个文件,上传到服务器,并给它一个可用的下载地址, 如http://地址/memc ...

  2. Multiload-ng

    导读 Multiload-ng是一个 GTK2 图形化系统监视器应用,可集成到 Xfce.LXDE 及 MATE 的桌面面板中, 它 fork 自原来的 GNOME Multiload 应用.它也可以 ...

  3. [转]在MyEclipse中设置struts.xml自动提示功能

    导入标签:<%@ taglib uri="/struts-tags" prefix="s" %> 要想在MyEclipse中实现struts.xml ...

  4. Linux下hostname与hosts

    参考:http://wp.fungo.me/linux/what-the-hell-is-hostname.html hostname 就是机器名,内核中的一个变量,可临时修改也可以永久修改 /etc ...

  5. 个人Win10 +archlinux安装笔记

    win10+archlinux 1.查看磁盘并分区并挂载1.1 分区/dev/sda1 WIN10 保留分区/dev/sda2 WIN10 ESP分区(EFI)/dev/sda3 WIN10 MSR分 ...

  6. 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  7. javaScript的function

    一.函数的声明方式 1.普通的函数声明 function box(num1,num2){ return num1+num2; } 2.使用变量初始化函数 var box=function(num1,n ...

  8. virtaulbox视图模式常用切换

    virtaulbox发现菜单不见,如何切换视图模式呢? 很简单,通过快捷键主机(host)键 Host+F                                          换到全屏模 ...

  9. 【Java EE 学习 28 上】【oracle学习第二天】【子查询】【集合运算】【几种数据库对象】

    一.子查询 1.为什么要使用子查询:问题不能一步求解或者一个查询不能通过一步查询得到. 2.分类:单行子查询和多行子查询. 3.子查询的本质:一个查询中包含了另外一个或者多个查询. 4.使用子查询的规 ...

  10. Jetty使用教程(一)——开始使用Jetty

    一.Jetty简介 1.1 什么是Jetty Jetty是一个提供HHTP服务器.HTTP客户端和javax.servlet容器的开源项目.   这个入门教程分为五个部分: 第一部分部分重点介绍如何使 ...