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

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

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

实验目的与要求:

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

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

实验内容、步骤

我的实验环境是Windows+IDEA
开始调试程序
885218-20160409153759328-2122375180.png

只要想要设置断点的地方的左边左键点一下就可以设置断点了,右击断点可以设置成条件断点
885218-20160409154237609-771121717.png
---
step over和step into885218-20160409153727359-1767327261.png
---
resume885218-20160409153956218-1365293291.png
---
watch窗口,按绿色的加号可以添加变量,按红色的减号可以把已添加的变量删掉,在watch窗口可以看到变量目前的值
885218-20160409154528765-1276372990.png


程序代码里也能看到变量值
885218-20160409154813750-411567114.png

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

因为我是用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]);
        }
    }
}

885218-20160409165007609-1448895746.png

实验心得与体会

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

参考资料

转载于:https://www.cnblogs.com/20145120hxx/p/5372027.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java程序设计实验四是一个关于事件处理和图形化用户界面的实验实验的目的是理解事件处理的机制,掌握本的事件处理方法,并且理解形化用户界面的设计,掌握Swing包中基本界面元素的使用。实验要求包括掌握图形用户界面中常见组件的名称和分类,掌握事件源、事件对象和事件监听器的概念,掌握ActionEvent和ActionListener的使用,掌握JFrame、JPanel、BorderLayout、FlowLayout、JButton、JTextField、JTextArea的使用,并且在Eclipse或Netbeans环境下完成选作实验内容,并认真撰写完整的实验报告实验步骤包括首先根据要求设计图形用户界面和程序中需要的类,定义继承自JPanel的面板类用于布局和绘制,定义继承自JFrame的类在其中完成界面的设计,定义事件监听器类完成事件处理,定义一个包含main方法的测试类,在其中创建框架类对象并显示,最后进行编译、调试和运行程序。一些实验提示包括使用面板进行页面布局,使用内部类定义事件监听器类,以及通过处理ActionEvent事件来完成按钮的点击响应。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java程序设计(四)](https://blog.csdn.net/wryf602/article/details/89047876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [java程序设计——实验四](https://blog.csdn.net/weixin_48388330/article/details/122494766)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值