20145120 《Java程序设计》实验一实验报告

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

实验目的与要求:

1.使用JDK编译、运行简单的Java程序;(第1周学习总结)

2.编辑、编译、运行、调试Java程序。

实验内容、步骤

我的实验环境是Windows+IDEA

开始调试程序

只要想要设置断点的地方的左边左键点一下就可以设置断点了,右击断点可以设置成条件断点

step over和step into

resume

watch窗口,按绿色的加号可以添加变量,按红色的减号可以把已添加的变量删掉,在watch窗口可以看到变量目前的值


程序代码里也能看到变量值

教材学习中的问题和解决过程

因为我是用WINDOWS+IDEA,所以实验一博客很多部分我都不能直接套用,代码调试需要的各个按钮都要要自己摸索,把鼠标移上去,等提示信息显示出来,再比较老师的截图里的内容,才能确定这个按钮的作用。

设条件断点的时候把i==3和i=3搞错了

代码调试中的问题和解决过程

我是20号,20mod5+1=1,做的是凯撒密码的实现。

1.一开始我以为应该有个scanner.nextChar的方法,然而,其实并没有。后来百度了一下,找到了toCharArray(),toCharArray()可以把字符串转化成字符数组。

Scanner scanner = new Scanner(System.in);
char[] m = new char[100];
char[] c = new char[100];
System.out.println("请输入明文:"); //输入明文
String str=scanner.nextLine();
char[] chars=str.toCharArray();
for (int i=0;i<chars.length;i++){
m[i]=chars[i];
}

因为一开始定义好了明文和密文的字符串,以为有个nextChar,所以这样写了,后来才想到可以直接把转出来的字符数组定成m就好

2.加密的部分我开始是这样写的

for (int i=0;i<100;i++){    //加密
if ((m[i]>='a'&&m[i]<='w')||(m[i]>='A'&&m[i]<='W')) {
c[i] = (char) (m[i] + 3);
}
else if ((m[i]>='x'&&m[i]<='z')||(m[i]>='X'&&m[i]<='Z')){
c[i] = (char) (m[i] + 3-26);
}
else {
c[i]=m[i];
}
}

后来发现程序不能运行,调试之后发现,如果明文小于100,后面都是Null,不可能再+3,所以出错了

3.后来我想尝试让可以自己输入密钥

System.out.println("请输入密钥:");   //取得密钥
int key = scanner.nextInt()%26; System.out.println("请输入明文:"); //取得明文
String str=scanner.nextLine();

发现输入密钥之后程序直接走完了,瞬间有种似曾相识的感觉,于是我试了下在中间加行scanner.nextLine();,果然成功了。

最终程序和截图

import java.util.Scanner;

public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[] c = new char[100];
System.out.println("请输入密钥:"); //取得密钥
int key = scanner.nextInt()%26;
scanner.nextLine();
System.out.println("请输入明文:"); //取得明文
String str=scanner.nextLine();
char[] m=str.toCharArray(); if (m.length>=100){
System.out.println("输入过长,请控制在100英文字符以内");
} for (int i=0;i<m.length;i++){ //加密
if ((m[i]>='a'&& m[i]<='z')||(m[i]>='A'&& m[i]<='Z')) {
c[i] = (char) (m[i]+key);
if (key>0){
if ((c[i]<'a'&& c[i]>'Z')||c[i]>'z'){
c[i] -= 26;
}
}
else{
if ((c[i]<'a'&& c[i]>'Z')||c[i]<'A'){
c[i] += 26;
}
}
}
else {
c[i]=m[i];
}
} System.out.println("密文:"); //输出密文
for (int i=0;i<m.length;i++) {
System.out.printf("%c",c[i]);
}
}
}

实验心得与体会

这次实验本身的算法不是很难,但是感觉编程中考验到我的地方还是不少,例如我一直以为是有一个scanner.nextChar(),老实说我到现在都不懂为什么不弄个nextChar出来。这次实验让我实践到了之前学到的很多知识,例如变量的定义,“.length”的使用,“Scanner”的使用等等,也学会了很多新知识,包括关于Scanner的一些特点,如何用IDEA调试代码等等,获益良多。

参考资料

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

  1. 20145330《Java程序设计》第一次实验报告

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

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

    20145320<Java程序设计>第一次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.08 18: ...

  3. 20145317彭垚 《Java程序设计》第一次实验实验报告

    20145317彭垚 <Java程序设计>第一次实验实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验名称:Java开发环境的 ...

  4. 20155339《java程序设计》第一次实验报告

    20155339<java程序设计>第一次实验报告 实验一 java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的java程序: 2.使用IDEA编辑.编译.运行.调试java程 ...

  5. 20144303 《Java程序设计》第一次实验实验报告

    20144303 <Java程序设计>第一次实验实验报告 北京电子科技学院(besti)实验报告 课程:java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.08 ...

  6. 20145240 《Java程序设计》第一次实验报告

    20145240 <Java程序设计>第一次实验报告 实验内容 一.命令行下java程序开发 1.建立Code目录,输入mkdir 20145240命令建立实验目录,并使用dir命令查看目 ...

  7. 《Java程序设计》课程实验要求

    目录 <Java程序设计>课程实验要求 注册实验楼账号 实验一 Java开发环境的熟悉 实验二<Java面向对象程序设计> 实验三 <敏捷开发与XP实践> 实验四 ...

  8. 20145127《java程序设计》第一次实验

    <java程序设计>第一次实验 实验内容及其步骤 1.使用JDK编写简单的Java小程序: Java编译的方法有很多,最基础最简单的就是使用命令行,记事本,Java虚拟机直接进行编译,下面 ...

  9. #《JAVA程序设计》 20155214 实验五 网络编程与安全

    <JAVA程序设计> 20155214 实验五 网络编程与安全 实验内容 掌握Socket程序的编写: 掌握密码技术的使用: 设计安全传输系统. 实验要求 要求一 结对实现中缀表达式转后缀 ...

  10. 《JAVA程序设计》 20155208 实验四 Android程序设计

    <JAVA程序设计> 20155208 实验四 Android程序设计 实验一: 实验要求: Android Stuidio的安装测试: 参考<Java和Android开发学习指南( ...

随机推荐

  1. 二维码zxing源码分析(四)wifi部分

    前三个部分的地址是:ZXING源码分析(一)CAMERA部分  . zxing源码分析(二)decode部分.zxing源码分析(三)result.history部分 前面三篇文章基本上已经把zxin ...

  2. Part 57 to 58 Why should you override ToString and Equal Method

    Part 57 Why should you override ToString Method sometimes you can override ToString method like that ...

  3. 获取字符串对应的MD5值 (AL16UTF16LE)

    CREATE OR REPLACE FUNCTION fn_md5_utf16le (InputString IN VARCHAR2) RETURN VARCHAR2 IS retval ); /** ...

  4. 使用pch预编译文件

    首先新建一个pch文件,然后要修改这个项目的Build Setting中的Prefix Header   修改为 $(SRCROOT)/项目名称/预编译文件名: 一般pch文件的用处: 1.导入框架, ...

  5. 点击文字label同时选中checkbox radio

    在做网页的时候一般会有一个需求:点击一段文字信息的同时选中某个checkbox 旧处理方式是在这段文字上加上点击事件触发checkbox的选中事件 //jq中://选中 $("#ID&quo ...

  6. php连接到数据库操作

    <?php $result = mysql_query($sql); while($row = mysql_fetch_array($result)) { ?> 要写的内容代码,比如说Ht ...

  7. springside出现Description Resource Path Location Type

    <?xml version="1.0" encoding="utf-8" ?><beans xmlns="http://www.sp ...

  8. (转)MongoDB分片实战 集群搭建

    环境准备 Linux环境 主机 OS 备注 192.168.32.13 CentOS6.3 64位 普通PC 192.168.71.43 CentOS6.2 64位 服务器,NUMA CPU架构 Mo ...

  9. (转)从集中到分布,解读网络视频IT架构变迁

    2006年以视频网站为代表的网络视频行业迅速崛起,IPTV.视频分享网站.视频搜索网站.提供视频服务的互动社区.交友.播客等等新兴媒体发展迅猛.网络视频行业现已成为众多资本机构关注与投资的焦点.但是在 ...

  10. ZLComboBox自定义控件开发详解

    [引言]距离上一回写博客已经有一些时日了,之前的爱莲iLinkIT系列主要是讲解了如何用NodeJS来实现一个简单的“文件传送”软件,属于JavaScript中在服务器端的应用. 今天,我们就回归到J ...