Java实验报告一 |
您所在的位置:网站首页 › 数据结构实验步骤怎么写 › Java实验报告一 |
南昌航空大学实验报告 2021 年 9 月 17 日
课程名称:面向对象程序设计B 实验名称: Java程序控制结构 学号: 姓名: 同组人: 指导教师评定: 签名:
一、实验目的 1、 1、熟悉Java开发及运行环境; 2、 掌握Java程序开发的基本步骤; 3、 了解Java+程序开发中的常见错误及其解决办法; 4、 了解IDE的调试手段和工具。
二、实验要求 1、对实验中要求的代码进行上机调试,完成实验指导书中全部实验内容。 2、编写实验报告。 三、实验步骤 1、 Java开发环境的配置 (1)在命令行下运行java –version及javac –version,查看机器上安装的Java版本并检查Java开发环境是否配置正确; (2)如果环境配置不正确,请修改系统环境变量path配置开发环境。
2、 由单个类组成的Java程序的编写与运行; (1)采用记事本编写下面所给的Java程序并保存为FirstProgram.java;
class Test{ public static void main(){ System.out.println("Hello,my first java program!"); } } (2)在命令行下运行javac FirstProgram.java,并根据出现的提示信息修改程序直至程序编译正确为止; (3)在命令行下运行java FirstProgram,并根据出现的提示信息修改程序直至程序运行正确为止; 运行以及调试如下:1.在命令行下运行结果如下:
2.代码更正,将代码中的Test改为FirstProgram,main方法后的括号里加上String arg[],如图所示:
3、由多个类组成的Java程序的编写与运行; (1)在FirstProgram.java中添加以下代码;
public class Another{ public void say(){ System.out.println("Another one."); } }
(2)使用javac命令编译程序,并根据出现的提示信息修改程序直至程序编译正确为止; (3)使用java命令运行程序,并根据出现的提示信息修改程序直至程序运行正确为止。 运行及调试如下: 1.在命令行里运行里直接运行,报出一个错误,将class前面的public去掉,再次运行,只能输出Hello,my first java program,无法输出Another one:,在第一个类中进行调用,具体更改代码以及运行截图如下:
3、 调试程序,参考附件以及相关在线资料,调试以下程序。 (1)以下代码中有几处语法错误和逻辑错误,请修正下面代码的错误并输出结果。 package experiment_1;
import java.util.Scanner; /** * 分数的四则运算测试类 */ public class FractionalCalculator { public static void main(String[] args) { Calculator cal;
// 输入分数内容和运算符 Scanner input = new Scanner(System.in); System.out.println("请分部输入表达式"); System.out.println("请输入参数1的分子:"); String data1 = input.next(); System.out.println("请输入参数1的分母:"); String data2 = input.next(); System.out.println("请输入运算符(+-*/) :"); String operation = input.next(); System.out.println("请输入参数2的分子:"); String data3 = input.next(); System.out.println("请输入参数2的分母:"); String data4 = input.next();
// 运算并输出 System.out.println("运算结果为:"); cal.compute(data1,data2, operation,data3,data4); } } /** * 分数的四则运算类输入:两个以字符串构成的分数,输出其相加的结果,结果仍以分数行式表示。 */ int numerator; // 分子 int denominator; // 分母 class Calculator {
/**设置分子分母 * 输入:正整数 * 输出:最简分数式,分子分母不包含公约数 */ void setNumeratorAndDenominator(int a, int b){ // 设置分子和分母 int c = gcd(a,b); // 计算最大公约数 numerator = a / c denominator = b / c; }
int getNumerator(){ return numerator; }
int getDenominator(){ return denominator; } /*greatest common divisor 求两整数最大公约数, * 输入:两正整数a,b * 输出:最大公约数b */ int gcd(int a,int b){ if(a < b){ int c = a; a = b; b = c; } int r = a % b; while(r > 0){ a = b; b = r; r = a % b; } }
Calculator add(Calculator r){ // 加法运算 int a = r.getNumerator(); int b = r.getDenominator(); int newNumerator = numerator * b + denominator * a; int newDenominator = denominator * b; Calculator result = new Calculator(); result.setNumeratorAndDenominator(newNumerator, newDenominator); return result; }
Calculator add(Calculator r){ // 减法运算 int a = r.getNumerator(); int b = r.getDenominator(); int newNumerator = numerator * b - denominator * a; int newDenominator = denominator * b; Calculator result = new Calculator(); result.setNumeratorAndDenominator(newNumerator, newDenominator); return result; } // 转化输入格式,判断并输出运算结果,代码中仅包含加法运算的内容,其他运算不用补齐,调试程序时注意只调试加法运算。 public static void compute(String data1,String data2,String operation,String data3,String data4){
int data1_1 = Math.abs(Long.parseLong(data1)); int data1_2 = Math.abs(Long.parseLong(data2)); int data2_1 = Math.abs(Long.parseLong(data3)); int data2_2 = Math.abs(Long.parseLong(data4));
Calculator r1 = new Calculator(); r1.setNumeratorAndDenominator(data1_2, data1_2); Calculator r2 = new Calculator(); r2.setNumeratorAndDenominator(data2_1, data2_2);
Calculator result; int a,b; if(operation.equals("+")){ result = r1.add(r2); a = result.getNumerator(); b = result.getDenominator(); System.out.println(data1+"/"+data2+" "+operation+" " +data3+"/"+data4+" = " + a + "/" + b); } } } 运行及调试如下:1.输入代码测试如下图所示:(1)28行出现错误,更改应该将int numerator;int denominator;挪到第二个类当中去。
(2)42行末尾少了分号。
(3)缺少返回值;改正:在68以及69行之间加上return b;
(4)72与82行函数命名重复,下面的应该是减法函数,更改:将第二个add改为sub。
(5)这四点错误是应该强制改为int类型而不是long类型,应该将Long.parseLong都改为Integer.parseInt
(6)代码成功运行后,但是进行计算得出的结果有误如下图所示:
经过查看代码发现102行的代码第一个data1_2应该改为data1_1。
四、实验结果 第一个实验截图:
结论:如果文件中只有一个类,文件名必须与类名一致,以及方法后面的括号用于传参。 第二个实验截图:
结论:如果一个文件里有两个类,第二个类无需加public,同时可通过第一个类来调用第二个类。 第三个实验截图:
结论:代码书写要注意,以及可以借助eclipse工具来对代码进行调试分析。 五、实验小结 通过这次实验,了解一些代码书写命名规范比如说:如何在第一个类里调用第二个类,如何给文件命名,之前只是在课上与慕课上见老师演示,但是终归没有自己亲自动手体会的那么深刻。也初步学会了使用eclipse工具,能利用eclipse方便的对代码错误的地方进行调试。也通过上面的实验更加进一步了解了什么叫做一切皆对象,一切皆类。 遇到的问题:刚开始做一二两个实验时没法自己顺利的找到问题,还得重新翻一下慕课,说明上课与慕课上的知识并未充分记牢,但通过实验加深了我对这几个点的印象,也说明了学Java这门课还得边学边练才能记的更加清楚,学的更加牢固。 六、附录 package experiment_1; import java.util.Scanner; /** * 分数的四则运算测试类 */ public class FractionalCalculator { public static void main(String[] args) { Calculator cal=new Calculator();
// 输入分数内容和运算符 Scanner input = new Scanner(System.in); System.out.println("请分部输入表达式"); System.out.println("请输入参数1的分子:"); String data1 = input.next(); System.out.println("请输入参数1的分母:"); String data2 = input.next(); System.out.println("请输入运算符(+-*/) :"); String operation = input.next(); System.out.println("请输入参数2的分子:"); String data3 = input.next(); System.out.println("请输入参数2的分母:"); String data4 = input.next();
// 运算并输出 System.out.println("运算结果为:"); cal.compute(data1,data2,operation,data3,data4); } } /** * 分数的四则运算类输入:两个以字符串构成的分数,输出其相加的结果,结果仍以分数行式表示。 */
class Calculator { int numerator; // 分子 int denominator; // 分母 /**设置分子分母 * 输入:正整数 * 输出:最简分数式,分子分母不包含公约数 */ void setNumeratorAndDenominator(int a, int b){ // 设置分子和分母 int c = gcd(a,b); // 计算最大公约数 numerator = a / c; denominator = b / c; }
int getNumerator(){ return numerator; }
int getDenominator(){ return denominator; } /*greatest common divisor 求两整数最大公约数, * 输入:两正整数a,b * 输出:最大公约数b */ int gcd(int a,int b){ if(a < b){ int c = a; a = b; b = c; } int r=0; if(b!=0) r = a % b; while(r > 0){ a = b; b = r; r = a % b; } return b; }
Calculator add(Calculator r){ // 加法运算 int a = r.getNumerator(); int b = r.getDenominator(); int newNumerator = numerator * b + denominator * a; int newDenominator = denominator * b; Calculator result = new Calculator(); result.setNumeratorAndDenominator(newNumerator, newDenominator); return result; }
Calculator sub(Calculator r){ // 减法运算 int a = r.getNumerator(); int b = r.getDenominator(); int newNumerator = numerator * b - denominator * a; int newDenominator = denominator * b; Calculator result = new Calculator(); result.setNumeratorAndDenominator(newNumerator, newDenominator); return result; } // 转化输入格式,判断并输出运算结果,代码中仅包含加法运算的内容,其他运算不用补齐,调试程序时注意只调试加法运算。 public void compute(String data1,String data2,String operation,String data3,String data4){
int data1_1 = Math.abs(Integer.parseInt(data1)); int data1_2 = Math.abs(Integer.parseInt(data2)); int data2_1 = Math.abs(Integer.parseInt(data3)); int data2_2 = Math.abs(Integer.parseInt(data4));
Calculator r1 = new Calculator(); r1.setNumeratorAndDenominator(data1_1, data1_2); Calculator r2 = new Calculator(); r2.setNumeratorAndDenominator(data2_1, data2_2);
Calculator result; int a,b; if(operation.equals("+")){ result = r1.add(r2); a = result.getNumerator(); b = result.getDenominator(); System.out.println(data1+"/"+data2+" "+operation+" " +data3+"/"+data4+" = " + a + "/" + b); } } }
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |