实验知识点

  1. JVM、JRE、JDK的安装位置与区别;
  2. 命令行运行javac;java;javac -cp; java -cp;
  3. PATH,CLASSPATH,SOURCEPATH的设定方法与应用;
  4. 包管理:package;import;javac -d ;
  5. Eclipse(Netbeans)管理Java项目,调试:断点、单步执行等;
  6. Java基础语法:类型与类型转换;变量;运算符;流程控制等;
  7. JDK帮助文档的使用。

实验内容及步骤

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

命令行下的程序开发

  • 步骤一(新建文件夹):

    1. 打开windows下的cmd(Windows键+R)
    2. 输入cd Code命令进入Code目录
    3. 输入md 20155330test建立以自己学号命名的文件夹
    4. 输入cd 20155330test进入文件夹
    5. 输入md exp1建立“实验一”文件夹
    6. 输入cd exp1进入“实验一”文件夹

  • 步骤二(编译、运行java程序):

    1. 使用vim编辑器编辑java程序,并在vim编辑器中输入以下内容

    2. 在命令行下编译、运行,结果如下

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

  1. 创建HelloJDB文件,输入下面代码:

     public class HelloJDB {
    public static void main(String[] args) {
    int i = 5;
    int j = 6;
    int sum = add(i, j);
    System.out.println(sum);
    sum = 0;
    for(i=0; i< 100; i++)
    sum += i;
    System.out.println(sum);
    } public static int add(int augend, int addend){
    int sum = augend + addend;
    return sum;
    }
    }

    运行结果如下:

  2. 在需要设置断点的一行左侧单击鼠标,出现红色圆点。如下在第五行设置了断点,Debug单步调试后输出了结果:

    在IDEA中可选择单步调试的方式有如下三种:

  3. 单击Step Over继续向下执行,执行完方法。得到运行结果sum=11。

Debug 常用快捷键

快捷键 介绍
F7 在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则不会进入该内嵌的方法中 必备
F8 在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则不进入当前方法体内 必备
F9 在 Debug 模式下,恢复程序运行,但是如果该断点下面代码还有断点则停在下一个断点上 必备
Alt + F8 在 Debug 的状态下,选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果 必备
Ctrl + F8 在 Debug 模式下,设置光标当前行为断点,如果当前已经是断点则去掉断点
Shift + F7 在 Debug 模式下,智能步入。断点所在行上有多个方法调用,会弹出进入哪个方法
Shift + F8 在 Debug 模式下,跳出,表现出来的效果跟 F9 一样
Ctrl + Shift + F8 在 Debug 模式下,指定断点进入条件
Alt + Shift + F7 在 Debug 模式下,进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果方法体还有方法,则会进入该内嵌的方法中,依此循环进入

练习:实现凯撒密码,并进行测试。

  • 实现凯撒密码代码如下:
import java.util.Scanner;
public class Caesar {
public static void main(String args[]) throws Exception {
System.out.println("请输入明文:");
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
System.out.println("请输入密钥:");
Scanner sc1 = new Scanner(System.in);
int key = sc1.nextInt();
Encryption(s, key);
System.out.println("请输入密文:");
Scanner sc2 = new Scanner(System.in);
String s1 = sc2.nextLine();
System.out.println("请输入密钥:");
Scanner sc3 = new Scanner(System.in);
int key1 = sc3.nextInt();
Decrypt(s1, key1);
}
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;
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;
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);
}
}
  • 设计思路:

    凯撒密码的实质是移位密码体制,通过把字母移动一定的位数来实现加密和解密。由于字符在计算机中的存储是以ASCII码的形式存储,那么只要在用户输入的字符串每位加上一定的数字便能得加密到一串密文,解密的过程相似。在程序中给出了输入明文/密文和密钥提示。

  • 运行结果:

实验过程中遇到的问题

  • 问题1:在命令行下编译运行java时出现以下问题
  • 解决方案:在尝试了更改环境变量添加ClASSPATH各种网络上常见方法后发现,是由于将JDK和JRE文件夹存在了电脑上的Program Files而不是Program Files(x86)中,在移动文件夹后问题得到了解决。

实验体会与总结

由于之前的密码学实验刚好也是类似的程序设计,所以在设计代码方面没有太多的难处,核心的思想是差不多的。需要注意的是,在java中的一些语法特别是输入输出方面与之前的C有所不同。这次的程序进行了简单的模块化,将加/解密分别进行了编写。但是java作为一门面向对象语言,在这方面的运用还有所欠缺,目前自编程序大多数还是继承了之前C语言的思想,希望在不断的学习中能够更好的运用java语言。

步骤 耗时 百分比
需求分析 10min 10%
设计 15min 15%
代码实现 50min 50%
测试 5min 5%
分析总结 20min 20%

20155330 实验一《Java开发环境的熟悉》(Windows+IDEA)实验报告的更多相关文章

  1. 20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告

    20145314郑凯杰 <Java程序设计>实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告 实验要求 •使用JDK编译.运行简单的Java程序: •使用Ecl ...

  2. 20145239 实验一 Java开发环境的熟悉(Windows + IDEA)

    实验一 Java开发环境的熟悉(Windows + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序:2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1.JV ...

  3. 20155324 《Java程序设计》实验一 Java开发环境的熟悉(Windws + IDEA)实验报告

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

  4. 20155227 2016-2017-2 《Java程序设计》实验一 Java开发环境的熟悉(Windws + IDEA)实验报告

    20155227 2016-2017-2 <Java程序设计>实验一 Java开发环境的熟悉(Windws + IDEA)实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: ...

  5. 20145219 《Java程序设计》实验一 Java开发环境的熟悉(Linux + Eclipse)实验报告

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

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

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

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

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

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

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

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

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

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

    20165206 实验一 Java开发环境的熟悉 一.实验内容及步骤 实验一 Java开发环境的熟悉-1 建立有自己学号的实验目录. 通过vim Hello.java编辑代码. 编译.运行Hello. ...

随机推荐

  1. JavaScript(核心、BOM、DOM)

    http://www.flyne.org/article/407 JavaScript(核心.BOM.DOM) JavaScript是基于对象和事件驱动的客户端脚本语言.有如下特点: 交互性 安全性( ...

  2. 1878. [SDOI2009]HH的项链【线段树 或 莫队】

    Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一 段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此他的项链变得 ...

  3. programming-languages学习笔记--第7部分

    programming-languages学习笔记–第7部分 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src ...

  4. .net中使用mysql回滚和sqlserver回滚的区别

    关于sqlserver事务和mysql事务 首先这是一种方法 public static int GetExecteQuery()        {            SqlConnection ...

  5. windows7系统PC机耳机没有声音

    排除耳机故障和主机耳机孔等硬件问题之后 可能情况: 1.进行音量设置 2.更新声卡驱动 (使用驱动程序进行检测并进行更新) 360驱动大师 驱动精灵 3.windwows相关设置存在问题 (1)打开控 ...

  6. disconf实践(三)基于XML的分布式配置文件管理,自动reload

    上一篇介绍了基于xml的非自动reload的分布式配置文件管理,这一篇介绍自动reload的方式(基于disconf实践二). 1. 修改RedisConfig.java package org.sp ...

  7. 使用Apache HttpClient 4.x进行异常重试

    在进行http请求时,难免会遇到请求失败的情况,失败后需要重新请求,尝试再次获取数据. Apache的HttpClient提供了异常重试机制,在该机制中,我们可以很灵活的定义在哪些异常情况下进行重试. ...

  8. C#中枚举

    1.枚举是一组命名整形常量,枚举类型使用Enum关键字进行声明的.在C#中枚举是值数据类型,枚举包含自己的值,且不能继承或传递继承.

  9. 离线服务器下docker的部署与应用

    一分钟内形成docker的模糊概念 网上很多文章避免将docker与虚拟机混为一谈,但对于初学者来说,完全可以将docker当做一种虚拟机技术,只需要牢牢记住一点最重要的区别:docker依赖于物理机 ...

  10. NSDate|NSTimeZone|时区|日历

    NSDate,NSDateFormatter以及时区转换-开发者-51CTO博客 iOS 时区转换 东八区 - 简书 iOS时间的时区转换以及一些方法记录 - 简书 iOS - OC NSTimeZo ...