20155216 实验一《Java开发环境的熟悉》实验报告
实验内容
1.使用JDK编译、运行简单的Java程序。
2.使用idea 编辑、编译、运行、调试Java程序。
3、实现四则运算,并进行测试。
4、实现带有“()”的“+”,“-”,“*”,“/”简单运算,运算结果为小数。
实验知识点
- JVM、JRE、JDK的安装位置与区别;
- 命令行运行javac;java;javac -cp; java -cp;
- PATH,CLASSPATH,SOURCEPATH的设定方法与应用;
- 包管理:package;import;javac -d
- idea管理Java项目,调试:断点、单步执行等;
- Java基础语法:类型与类型转换;变量;运算符;流程控制等;
- JDK帮助文档的使用。
实验目的与要求
1、通过命令行和idea两种方式实现。
2、完成实验、撰写实验报告。
3、实验报告中统计自己的PSP(Personal Software Process)时间。
实验设计说明
1、由键盘输入需要计算的四则运算式并回车。
2、可连续输入需计算的四则运算式,输入“#”结束程序。
3、输出结果若为小数,则最多保留六位小数;若为整数,则保留两位小数。
4、输入的运算式若带有“()”,则“()”必须匹配。
实验源代码
package cc.daima;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Operation {
public static void main(String[] args){
// String str=" 11 12 13 56 ";
// String[] data=str.split("\\s");
// for(int i=0;i<data.length;i++){
// System.out.println(data[i]);
// }
BufferedReader reader=null;
InputStreamReader inputStreamReader=null;
// ArrayList<String>opt=new ArrayList<String>();
try{
System.out.println("请输入表达式:或直接输入#结束运算!");
inputStreamReader=new InputStreamReader(System.in);
reader=new BufferedReader(inputStreamReader);
String str=reader.readLine();
while(!str.equals("#")){
System.out.println("运算结果为:"+opt(str)+"");
System.out.println("请输入表达式:或直接输入#结束运算!");
str=reader.readLine();
}
}catch(Exception e){
e.printStackTrace();
}
if(reader!=null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static float opt(String s) throws Exception{
if(s == null || "".equals(s.trim())) {
return 0f;
}
int a1=s.indexOf("+");
int a2=s.indexOf("-");
int a3=s.indexOf("*");
int a4=s.indexOf("/");
int a5=s.indexOf("(");
if(a1==-1&&a2==-1&&a3==-1&&a4==-1){
if(s.trim()==null||"".equals(s.trim())){
throw new Exception("operate error");
}
return Float.parseFloat(s.trim());
}
if(a5!=-1){
int a6=s.indexOf(")");
if(a6==-1){
throw new Exception("括号不匹配");
}else{
float f=opt(s.substring(a5+1,a6).trim());
s=s.replace(s.substring(a5,a6+1), String.valueOf(f));
return opt(s);
}
}
if(a1!=-1){
return opt(s.substring(0,a1))+opt(s.substring(a1+1,s.length()));
}
if(a2!=-1){
return opt(s.substring(0,a2))-opt(s.substring(a2+1,s.length()));
}
if(a3!=-1){
return opt(s.substring(0,a3))*opt(s.substring(a3+1,s.length()));
}
if(a4!=-1){
return opt(s.substring(0,a4))/opt(s.substring(a4+1,s.length()));
}
return Integer.parseInt(s.trim());
}
}
设计思路
先定义结束运算程序的字符“#”,用ArraysList收集字符。再定义所有的运算符,以及处理括号不匹配问题。最后用连续的if语句定义运算。其中用try-catch组合处理运算输入和运算过程中的各种问题,以保证程序的稳定和四则运算的逻辑规则。
实验测试结果截图

实验体会
通过对代码的编译调试过程,更加深刻地理解了异常处理方法和数据的收集。
能更加熟练地使用idea断点调试。
对java的开发环境更为了解并适应。
实验报告中统计自己的PSP(Personal Software Process)时间

20155216 实验一《Java开发环境的熟悉》实验报告的更多相关文章
- 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...
- 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...
- 20165327《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...
- 20165205 实验一 java开发环境的熟悉 实验报告
20165205 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:刘喆君 学号:20165205 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验 ...
- 20162327实验一Java开发环境的熟悉实验报告
20162327 <程序设计与数据结构>第一次实验报告 基础知识 1.JDB的使用 使用JDB调试程序需要以下五个步骤: 1.设置断点 stop in 2.run 3.print 4.ne ...
- 实验一Java开发环境的熟悉
实验一Java开发环境的熟悉 实验内容 •命令行下Java程序开发 •IDEA下Java程序开发.调试 •练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) •实现凯撒密码 ...
- 20175316 盛茂淞 实验一 Java开发环境的熟悉
20175316 盛茂淞 实验一 Java开发环境的熟悉 实验目的 使用JDK编译.运行简单的Java程序 实验要求 1.建立"自己学号exp1"的目录 2.在"自己学号 ...
- 20155327实验一 Java开发环境的熟悉
20155327实验一 Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的java程序 2.使用IDEA编辑.编译.运行.调试java程序 实验步骤 1.使用JDK编译.运行简单的jav ...
- 20165233 实验一 Java开发环境的熟悉
20165233 实验一 Java开发环境的熟悉 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 2.完成实验.撰写实验 ...
- 20155231 java实验一 Java开发环境的熟悉
20155231 java实验一 Java开发环境的熟悉 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 完成实验.撰写实验 ...
随机推荐
- Programming Assignment 3: Baseball Elimination
编程作业三 作业链接:Baseball Elimination & Checklist 我的代码:BaseballElimination.java 问题简介 这是一个最大流模型的实际应用问题: ...
- 外网访问用azure虚拟机搭建的网站
1.Ubuntu+Apache+PHP的环境搭建(此处省去了mysql的步骤) 在azure上搭建上述的开发环境和在本地PC搭建是一样的步骤,具体介绍请参看这里. 2.从外网访问 注意,这一步的前提是 ...
- python的os和sys模块
OS模块: 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目 ...
- 1295. [SCOI2009]最长距离【最短路】
Description windy有一块矩形土地,被分为 N*M 块 1*1 的小格子. 有的格子含有障碍物. 如果从格子A可以走到格子B,那么两个格子的距离就为两个格子中心的欧几里德距离. 如果从格 ...
- node.js的npm命令常见错误及解决方案
使用npm命令进行模块安装的时候场出现各种错误,本文总结我所遇到的各种错误,并提供解决方案.(大部分内容为网上收集) 首先使用淘宝 NPM 镜像 大家都知道国内直接使用 npm 的官方镜像是非常慢的, ...
- [Java123] JDBC and Multi-Threading 多线程编程学习笔记
项目实际需求:DB交互使用多线程实现 多线程编程基础:1.5 :( (假设总分10) 计划一个半月从头学习梳理Java多线程编程基础以及Oracle数据库交互相关的多线程实现 学习如何通过代码去验证 ...
- Observer(观察者)模式
1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力.当对象们连接在一起时,它们就可以相互提供服务和信息. 通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信.但是 ...
- 怎么用Python写爬虫抓取网页数据
机器学习首先面临的一个问题就是准备数据,数据的来源大概有这么几种:公司积累数据,购买,交换,政府机构及企业公开的数据,通过爬虫从网上抓取.本篇介绍怎么写一个爬虫从网上抓取公开的数据. 很多语言都可以写 ...
- 如何设计处优秀的Restful API
只知道遵规循矩的程序员是假程序员,任何技术都是不断发明创造改进的. 如何设计处优秀的Restful API? 盲目跟风,设计糟糕的Resful API = 浪费时间 ! 不啰嗦,直接进入技术主题: ...
- Ansible常用功能
Ansible 是近几年十分流行的DevOps工具架构什么的我就不在这里赘述了,网上一找一堆 这里写点我在ansible常用功能 1.命令串 #copy文件 #ansible host文件中的主机组 ...