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编辑器> 课程: 完成实验.撰写实验 ...
随机推荐
- Tuple元组 、 ValueTuple 值元组详解
Tuple元组 Tuple是C# 4.0时出的新特性,.Net Framework 4.0以上版本可用. 元组是一种数据结构,具有特定数量和元素序列,与数组不同,元祖中的元素可以不同的数据类型.比如设 ...
- Redis的数据类型及其常用命令
快速入门Redis 首先安装redis: windows下安装redis Linux下安装redis 1. 什么是redis Redis属于nosql(非关系型数据库) 关系型数据库是基于关系表的数据 ...
- vagrant 打造开发环境
1 vagrant http://www.vagrantup.com/ 2 veewee https://github.com/jedi4ever/veewee 3 vagrant boxes htt ...
- Google的Python代码格式化工具YAPF详解
平时习惯了杂乱无章地编写代码,而最后的代码勘定,却依赖于PyCharm自带的格式化工具,以及其自带的提示功能来规范代码.而pycharm里的格式化工具,不支持对多文件进行代码批量格式化,曾经尝试些解决 ...
- Linux CPU的中断【转载】
中断其实就是由硬件或软件所发送的一种称为IRQ(中断请求)的信号. 中断允许让设备,如键盘,串口卡,并口等设备表明它们需要CPU. 一旦CPU接收了中断请求,CPU就会暂时停止执行正在运行的程序,并且 ...
- java复制文件夹及所有子目录和文件
package text; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; im ...
- FP又称为Monadic Programming
什么是Monad? trait Monad[+T] { def flatMap[U]( f : (T) => Monad[U] ) : Monad[U] def unit(value : B) ...
- TCP (传输控制协议)
http://baike.baidu.com/item/TCP/33012?fr=aladdin TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可 ...
- Django中模型(五)
Django中模型(五) 六.模型查询 1.概述 查询集,表示从数据库获取的对象集合. 过滤器就是一个函数,基于所给的参数限制查询集结果.查询集可以有多个过滤器. 从sql角度来说,查询集合等价于se ...
- Kali-linux服务的指纹识别
为了确保有一个成功的渗透测试,必须需要知道目标系统中服务的指纹信息.服务指纹信息包括服务端口.服务名和版本等.在Kali中,可以使用Nmap和Amap工具识别指纹信息.本节将介绍使用Nmap和Amap ...