zoukankan      html  css  js  c++  java
  • 20165214 实验一 Java开发环境的熟悉

    20165214 实验一 Java开发环境的熟悉

    一、实验报告封面

    课程:Java程序设计 班级:1652班 姓名:朱文远 学号:20165214

    指导教师:娄嘉鹏 实验日期:2018年4月2日

    实验时间:13:45 - 15:25 实验序号:一

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

    实验目的与要求:
    1、完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题以及分析。
    2、实验报告中统计自己的PSP(Personal Software Process)时间;
    3、掌握使用IDEA完成基础编程与程序调试的能力。

    二、实验内容:

    1、使用JDK编译、运行简单的Java程序;
    2、使用IDEA 编辑、编译、运行、调试Java程序。

    三、实验步骤

    (一)命令行下Java程序开发

    • 建立“2165214/exp1”的目录

    • 在“20165214/exp1”目录下建立src,bin等目录

    • 在“src”目录输入vi Hello.java进入编译界面,输入如下程序:

    • 使用cd ..返回到“exp”目录下,输入javac -d bin src/Hello.java将源代码编译到“bin”目录下;接着再输入java -cp bin zwy.Hello运行程序,接着输入“朱文远”,得到结果。

    • 最后使用tree来查看目录结构,如下图:

    (二)IDEA下Java程序开发、调试

    • 1、创建“HelloJDB”项目,在该项目下创建“HelloJDB”类,并输入代码:

    • 2、点击“run”运行代码(或快捷键Alt+Shift+F10):

    • 3、在要求的行数左边点击一下,设置断点(或快捷键Ctrl+F8),然后点击Debug(或者使用快捷键Alt+Shift+F9),得到如下结果:

    • 4、点击“Step into”(或快捷键F7)或者“StepOver”(或快捷键F8)来使程序运行到下一步

      • 4.1这里我们要清楚,Step into可以进入方法运行下一步,而Step Over是直接运行完方法。这里我们使用Step over,得到如下结果:
    • 5、设置条件断点,将程序里i的值设置为50:

    • 6、点击Resume(或快捷键F9)直接运行程序到下一个断点,也就是上一步设置的条件断点:

    (三)练习

    • 1、题目:我的学号14%9再+1等于6,所以我需要完成第六题: 实现求排列数P(n,m)的功能,m,n从命令行输入,并进行测试(正常情况,异常情况,边界情况)。
    • 2、分析:要清楚排列式的计算方法为P(n,m)=n!/(n-m)!,且要求0<m<=n,m可以等于0,n不能等于0(数学规定P(n,0)=1)。
    • 3、编程:进入新创建的“20165214zwy”项目,编写代码

    Pratice.java主函数

    import java.io.*;
    import java.util.*;
    public class Pratice {
        public static void main(String args[]) {
                Count count=new Count();
    
                System.out.println("请输入总数n");//输入总的个数
                Scanner a = new Scanner(System.in);
                int n = a.nextInt();
                System.out.println("请输入个数m");//输入要选的个数
                Scanner b = new Scanner(System.in);
                int m = b.nextInt();
                try {
                        count.sum(n,m);
                        int total= count.getTotal();
                        System.out.println("结果为"+total);
                }
                catch(WrongException e)
                {
                    System.out.println("输入出现错误");
                    System.out.println(e.Mess());
                }
        }
    }
    

    Count.java计算

    class Count{
        int jie,N,M;
        public void sum(int n,int m) throws WrongException {     //计算结果
            if(n<=0||m<0||n<m){
                throw new WrongException("确保n>0,m>=0且n<=m!"); //当输入错误时抛出异常
            }
            N = Jiecheng(n);
            M = Jiecheng(n-m);
        }
        public int Jiecheng(int a){  //计算阶乘
            jie=1;
            for(int i=1;i<=a;i++){
                jie=jie*i;
            }
            return jie;
        }
        public int getTotal() {  //返回计算值
            return (N/M);
        }
    
    }
    

    WrongException.java自定义异常类

    class WrongException extends Exception {   //自定义异常
        String Message;
        public WrongException(String s) {
            Message = s;
        }
        public String Mess( ){
            return Message;
        }
    }
    
    • 4、测试

    • 4.1、IDEA测试:

      • 正常情况:

      • 异常情况(3种):


      • 边界情况(2种):

    • 4.2、命令行测试:

      • 正常情况:

      • 异常情况(3种):


      • 边界情况(2种):

    测试结果正确。

    四、遇到的问题

    • 问题1:
    • 问题1解决方案:错误没有定义N,M就直接使用。第一次改的时候我是把定义放在方法sum里面,然后发现还是不能通过,错误原因是getTotal方法中的N,M没有定义。这就引发了我的思考。为什么在前面的sum类定义的不能在后面的使用呢?当我把N,M的定义放到方法外去,再编译,程序就能运行出来了。想了一会,想起来之前看过:局部变量的范围只是在方法内。于是我的问题就解决了。
    • 问题2:
    • 问题2解决方案:方法在声明要产生的异常时应该使用的是关键字throws而不是throw

    五、感想与收获

    平时在学习Java的过程中,我们大多都在跟着书里面敲代码,即时是课后的题目,在教材里都可以找到相似的问题。这次实验在做练习题的时候,才能算得上是真正的自己设计一个Java程序。虽然花的时间比较多,但是收获也很多。这次练习应用了很多方面的内容,把目前为止学的内容都给串了起来,巩固了以前的知识,也学会了将各个模块的知识结合在一起,收获很大。
    还有一点感受就是,要想学好Java,一定要多练习代码。这里的练习指的不是照搬照抄写,而是找一些题目来自己练习。
    本来还想根据第十章的内容把这个问题设计成有对话框的程序。尝试了一会,失败了。。第十章还不够扎实,接下来得再花时间来补一补,争取在下次实验实现这个想法。

    五、[码云链接](https://gitee.com/BESTI-IS-JAVA-2018/20165214ZWY/tree/master/20165214/

    六、PSP时间

    步骤 耗时 百分比
    需求分析 5min 5%
    设计 10min 10%
    代码实现 60min 60%
    测试 3min 3%
    分析总结 22min 22%
  • 相关阅读:
    你好,2021!
    庚子走,辛丑来,愿一切安好!
    花魂鸟魂总难留,鸟自无言花自羞
    熟悉的小胡同
    夜半听鼾声
    写在儿子22岁生日
    vue配置Azure Artifacts npm包源
    RabbitMQ出错:AMQP close-reason, initiated by Peer, code=530的解决办法
    .NET MVC存储图片到数据库的解决方案
    EF Core解决报错’EntityTypeBuilder未包含“ToTable”的定义‘的方法
  • 原文地址:https://www.cnblogs.com/zhuwenyuan/p/8686285.html
Copyright © 2011-2022 走看看