北京电子科技学院(besti)实验报告

课程:Java程序设计
班级:1453
指导教师:娄嘉鹏
实验日期:2016.04.08
实验名称:Java开发环境的熟悉(Linux + Eclipse)
实验内容:
1.使用JDK编译、运行简单的Java程序;
2.使用Eclipse 编辑、编译、运行、调试Java程序。
实验目的与要求:
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程;
2.完成实验、撰写实验报告,实验报告模板见QQ群,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等);
3.实验报告中统计自己的PSP(Personal Software Process)时间:


实验内容、步骤与体会

一、实验内容:

使用JDK和IDE编译、运行简单的Java程序,
题目: 实现四则运算,并进行测试。

程序设计思路:

四则运算顾名思义,就是加、减、乘、除四种运算,因为一开始要有输入,所以我就调用了Scanner实例,当用户选择不同运算时,我打算用switch与case语句来实现,这就是我一开始凭感觉想到的东西,于是我做了个比较基础的:先让用户输入两个数,然后选择一种运算方式,然后得出结果,就这么简单。
将这两个数分别定义成双精度浮点型数据,分别为a和b。接着就是选择运算方式,用switch与case语法来实现,然后进入switch的case里面,直接System.out.println()出相应的式子就可以了。

步骤 耗时 百分比
需求分析 30分钟 16%
设计 1小时 33%
代码实现 30分钟 16%
测试 30分钟 16%
分析总结 30分钟 16%

程序代码:

package field; 
         import java.util.Scanner;  
         public class Main {

while(true)
            {
            System.out.println("PLEASE INPUT TWO NUMBERS");
            Scanner scanner =new Scanner(System.in);
            Double a=scanner.nextDouble();
            Double b=scanner.nextDouble();

System.out.println("PLEASE CHOOSE:1、ADD 2、MINUS 3、MULTIPLY 4、DIVIDE");
            int choice=scanner.nextInt();

switch (choice) {
            case 1:
            System.out.print("结果为");
            System.out.println(a+b);
            break;
            case 2:
            System.out.print("结果为");
            System.out.println(a-b);
            break;
            case 3:
            System.out.print("结果为");
            System.out.println(a*b);
            break;
            case 4:
            if(b==0)System.out.println("ERROR");
            System.out.print("结果为");
            System.out.println(a/b);
            break;
            default:System.out.println("ERROR");
          }
        }
       }
    }

运行结果为:


二、调试代码(1):一开始确实编译成功了,不过突然发现没有考虑到除数为0的情况,这在逻辑上是不严谨的。于是在除法那块加上了判断除数是否为0,最开始不知道什么是断点,也没有用断点来调试,不过后来百度知道了在eclipse中设置断点的方法:在方法内部选择要打断点的代码,双击,左边会出现一个点。然后在工具栏中找debug,点击后也许会出现切换窗口的对话框,点击YES,一般按F8来一步步调试。

三、实验体会(1)实验课下来以后,觉得自己之前编的那个四则运算确实太基础太简单了,没有挑战性,不大满意。又因为自己想尝试一些新的东西,所以以玩的心态,在原有代码的思想上做了一些改进。首先先判断用户输入的数字是否符合运算要求,如果不考虑这一点的话万一用户不小心输入了错误的数字,那么就会导致运算发生错误。这让我想到了第八章的知识,使用try、catch语法,如果发生错误,执行流程会跳离错误发生点,显示更友好的错误信息。其次,主程序依旧用了循环。这次整个程序运用了do while语法,使整个程序可以不断地循环,避免用户需要不断编译程序,在这个循环中,用户能够根据自己的需要选择继续还是结束,给了用户更多的选择空间。

程序代码:

package field;
                   import java.util.Scanner;
                  import java.text.DecimalFormat;
            public class Zhidao {

public static void main(String[] args) {
          String condition = "";
          Zhidao zhidao = new Zhidao();
            
do{                       
            Scanner scanner = new Scanner(System.in);
            try{
                System.out.print("输入第一个数:");
                double x = scanner.nextDouble();
                System.out.print("输入第二个数:");
                double y = scanner.nextDouble();
                System.out.print("输入运算符:");
                String s = scanner.next();
               
 char z = s.charAt(0);
                zhidao.yunsuan(x, y, z);
            }catch(Exception e)
            {
                System.out.println("请输入正确的数据!");
            }
            System.out.print("是否继续?continue:继续,任意字符:结束");
            condition = scanner.next();

  }while("continue".equals(condition));
    }

public static void yunsuan(double x,double y,Character z){
        DecimalFormat r=new DecimalFormat();
        r.applyPattern("#0.00");
        if(z.equals('+')){
            System.out.println(x+"+"+y+"=" + r.format((x+y)));
        } else if(z.equals('-')){
            System.out.println(x+"-"+y+"=" + r.format((x-y)));
        } else if(z.equals('*')){

System.out.println(x+"*"+y+"=" + r.format((x*y)));
        } else if(z.equals('/')){
         
   if(y==0)
            {
                System.out.println("被除数不能为0");
            } 
            else{
                System.out.println(x+"/"+y+"=" + r.format((x/y)));
                }

}
        else{
            System.out.println("无法识别该运算符");
            }
    }
}

运行结果:

调试代码(2):由于对Java的知识掌握得并不是炉火纯青,所以刚开始只是有好的设计思路但却不会设计,后来就网上查阅,又看了书上的相应的程序,整理思绪,一步步逐渐实现代码。我最开始就在类那里出现了问题, 程序中显示的是
>
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: 
at cc.openhome.Zhidao.main(Zhidao.java:11)
C:\Users\Administrator\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1

后来才发现原来是没有数据库操作,哎,还是自己主动动手编程太少了,这点意识都没有。后来加上了数据库操作,程序就跑起来了。

实验体会(2):本次实验是第一次实验,相对来说我抽的题目——四则运算还比较简单,还好这次的程序代码没有太大的问题,自己都能够解决。但是不得不承认,我感觉我还是很缺乏Java的实战经验,第一次的代码没啥难度,思路也清晰易懂,第二次尝试了一些不一样的东西,比如try、catch的调用,虽然中途有一些问题,但最后也成功了。以后不止要多敲代码,还要多“主动”的敲代码,这才是重点,不要盲目的抄书,要把书上的东西最终都变成自己的!

20145326 《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. 【go】go语言socket通信样例

    server.go package main import ( "net" "fmt" "io" ) func main() { liste ...

  2. 【Java nio】java nio笔记

    缓冲区操作:缓冲区,以及缓冲区如何工作,是所有I/O的基础.所谓“输入/输出”讲的无非就是把数据移出货移进缓冲区.进程执行I/O操作,归纳起来也就是向操作系统发出请求,让它要么把缓冲区里的数据排干,要 ...

  3. 小程序 - API 踩坑记录(更新中...)

    API 小程序API结构导览图: 声明: 请尊重博客园原创精神,转载或使用图片请注明: 博主:xing.org1^ 出处:http://www.cnblogs.com/padding1015/

  4. jquery类似方法的比较(三)

    属性选择器 1.$("div[class|='test']")可以选择 class为test的div 和 class以“test-”开头的div. 2.$("div[cl ...

  5. 关于hql语句的一些问题

    1.student is not mapped问题: 在执行显示数据库数据的时候出错 大概提示说: errors: s.entr_Id student is not mapped 碰到这种情况一般是: ...

  6. CVE-2017-1000117命令注入验证

    首先,我们来看第一个问题,就是ssh的一种操作. ssh -oProxyCommand=gnome-calculator xxx 问题的本质在于ssh会把//后的host那么部分带-号的按照参数指令去 ...

  7. 手动把第三方的jar包添加到本地mavne仓库的方法

    在实际实用maven进行开发的过程中,有一些项目没有使用maven来进行打包(比如我在做中文分词时候用的IK分词器),我们就无法在maven的仓库中下载这些jar包,但是我们在开发中会用到这些东西,所 ...

  8. GOOGLE和百度的长域名

    GOOGLE的变态域名:www.mamashuojiusuannizhucedeyumingzaichanggoogledounengsousuochulai.cn/中文拼音:“妈妈说就算你注册的域名 ...

  9. Unity3D笔记四 基础知识概念

    1. Project视图 主要存放游戏中用到的所有资源文件,常见的包括:游戏脚本.预设.材质.动画.自定义字体.纹理.物理材质和GUI皮肤等. 1>     Folder: 文件夹,用于资源的分 ...

  10. iOS 单例用法

    单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模式的要点有三个:一是某个类只能有一个实例: ...