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. 博客不再更新,已转移到自己的小站iwenku.net

    博客不再更新,已转移到自己的小站iwenku.net,欢迎访问! 博客不再更新,已转移到自己的小站iwenku.net,欢迎访问! 博客不再更新,已转移到自己的小站iwenku.net,欢迎访问! 博 ...

  2. Table of Contents - TCP/IP

    网络访问层 Ethernet II 网际层 IP IPv4 报文格式 ICMP ICMP 报文分析 ping: 向网络主机发送 ICMP ECHO_REQUEST 包 ARP ARP 过程 arp 命 ...

  3. WEB系统架构

    客户端方向:框架+控件+模板+元数据辅助:懒加载+合并请求+异步任务+推送+缓存技术:reactjs,requirejs,jquery,angularjs,bootstrap,ant.design,f ...

  4. Android之动态图片

    在Android中,比起静态图片来动态图片会更加生动更加酷炫,因为这种视觉效果,你应该会发现我们手机中大多数应用软件的导航页面也都是采用动态图片来展示.动态图片的格式有gif.png格式等等. 我们就 ...

  5. 使用runtime给类动态添加方法并调用 - class_addMethod

    上手开发 iOS 一段时间后,我发现并不能只着眼于完成需求,利用闲暇之余多研究其他的开发技巧,才能在有限时间内提升自己水平.当然,“其他开发技巧”这个命题对于任何一个开发领域都感觉不找边际,而对于我来 ...

  6. iOS学习笔记--OC系列(1)

    前言 从学校毕业进入公司工作已经第3个年头了,回顾这3年的经历,有种迷茫的感觉.在公司我主要是做零售业公司的系统维护,接触的主要是Oracle的Database的东西.但是业务知识和oracle,都没 ...

  7. 银联接口测试——详细(JAVA)

    准备材料 1.注册账号 https://open.unionpay.com/ajweb/register?locale=zh_CN 2.▼登录账号 -->帮助中心--> 下载,选择网关支付 ...

  8. 9款大气实用的HTML5/CSS3注册登录表单

    1.HTML5/CSS3仿Facebook登录表单 利用CSS3制作的登录表单的确很漂亮,我们在html5tricks网站上也分享过几款了,比如CSS3密码强度验证表单可以显示密码的强度,这款纯CSS ...

  9. 2016.10.30 济南学习 Day2 下午 T1

    他 [问题描述] 一张长度为N的纸带,我们可以从左至右编号为0 − N(纸带最左端标号为 0).现在有M次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带 的长度是多少. [输入格式] 第一行 ...

  10. C++ Maps 映射

    C++ Maps是一种关联式容器,包含“关键字/值”对 begin() 返回指向map头部的迭代器 clear() 删除所有元素 count() 返回指定元素出现的次数 empty() 如果map为空 ...