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


    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调试代码等等,获益良多。

    参考资料

  • 相关阅读:
    JNI和NDK的关系
    JNI和NDK的关系
    Android SDK结构分析
    设计模式:单例模式
    编程规范:占位符
    设计模式:工厂模式
    代码整洁之道----读书笔记
    个人编程规范
    装饰器函数
    异常处理
  • 原文地址:https://www.cnblogs.com/20145120hxx/p/5372027.html
Copyright © 2020-2023  润新知