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的开发环境更为了解并适应。