java实验报告实验环境_20175221 实验一《Java开发环境的熟悉》实验报告

20175221 实验一《Java开发环境的熟悉》实验报告

(一)Linux运行结果

623d06f6b5e583d5b7287e7a215b2329.png

(二)IDEA下Java程序开发、调试:学会通过调试(Debug)来定位逻辑错误

试验IDEA是否正常

258a48a8db0e33576a6957ef7244fec5.png

开始调试

1.设置断点+debug

调试程序首先要会设置断点和单步运行。设置断点,在要设置断点的行号旁用鼠标单击一下就行(Ctrl+F8)

然后单击菜单「Run」->「Debug...」(Alt+Shift+F9)开始调试Java程序

此时第5行代码没有被执行,变量sum的值并不是11,如图

621b8fb5a1bcb4bbd89abfd1c5696ed7.png

2.单步运行

单步运行让程序运行到第6行,单步运行有两种:Step Into(F7)和Step Over(快捷捷F8),优先使用Step Over,这时查看变量i的值,会看到sum等于11。如图:

31d92003aad05fbfb5d5306490f273fe.png

3.F9跳步

让程序直接运行到第9行,首先我们要在第9行设置断点,然后单击Resume图标(快捷键F9),如图:

1306954736ecfe3558ab9bebac2deb07.png

4.条件断点

单步执行效率比较慢还导致另外一个问题,若一个大循环中间出了问题,这时可以通过条件断点解决问题。设置条件断点,我们在第9行左边断点处单击鼠标右键,弹出断点属性框,我们设置条件“i==50”,按F9,如图:

c2282725a0dec98e29f0ca68ec7686a9.png

5.临时断点

断点只中断一次,比如我们想把第9,10行的for循环一下子运行完,我们就需要在第12行设个条件断点。我们可以在第十二行设个断点,然后鼠标右击断点:然后点「More」,选中「Remove Once hit」

(三)练习

4. 实现学生成绩管理功能(增删改,排序,查找),并进行测试(正常情况,异常情况,边界情况)。

代码编写:

public class Student {

private inton;privateString name;private intage;private intjava;private intc_shar;private inthtml;private intsql;private intsum;private intavg;//一个属性具备两个方法赋值和取值

public void setOn(inton){this.on=on;//把传递的参数赋值给当前的on

}public int getOn(){//取值必须返回

return this.on;

}publicString getName() {return this.name;

}public voidsetName(String name) {this.name =name;

}public intgetAge() {return this.age;

}public void setAge(intage) {this.age =age;

}public intgetJava() {returnjava;

}public void setJava(intjava) {this.java =java;

}public intgetC_shar() {returnc_shar;

}public void setC_shar(intc_shar) {this.c_shar =c_shar;

}public intgetHtml() {returnhtml;

}public void setHtml(inthtml) {this.html =html;

}public intgetSql() {returnsql;

}public void setSql(intsql) {this.sql =sql;

}public intgetSum() {returnsum;

}public voidsetSum() {this.sum = this.java+this.sql+this.html+this.c_shar;

}public voidsetAvg() {this.avg = (this.sum)/4;

}public intgetAvg() {returnavg;

}//重写toString()方法,默认toString()返回的是哈希码值

publicString toString(){

String msg="\t"+this.on+"\t"+this.name+"\t"+this.age+"\t"+this.java+"\t"

+this.c_shar+"\t"+this.html+"\t"+this.sql+"\t"+this.sum+"\t"+this.avg;returnmsg;

}

}

import java.util.*;

public classAdmin {

String msg="\t编号\t姓名\t年龄\tjava\tc#\thtml\tsql\t总分\t平均分";//用来更新学生类的输出

public voidprint(Student[] arr){

System.out.println(msg);for(int i=0;i

arr[i].setSum();

arr[i].setAvg();

System.out.println(arr[i]);

}

}

}//根据编号判断学生是否存在

public boolean exist(inton,Student stu){if(stu!=null){if(stu.getOn()==on){return true;

}else{return false;

}

}return false;

}//创建添加学生的方法

public void create(String name,intage,Student[] arr){

Student stu=new Student();//new 一个对象

stu.setName(name);

stu.setAge(age);int i=this.setIndex(arr);

stu.setOn(i);if(i==999){

System.out.println("学生人数已经最大,不能继续添加了!");

}else{

arr[i]=stu;

}this.print(arr);//更新信息

}//返回数组里面为空的下标

public int setIndex(Student[] arr){//判断学生数组里是否有人,如果没有则添加入此,有则选下一个空间

for(int i=0;i

}

}return 9999;

}//查询方法

public void select(int on,Student[] arr){//接收编号,并且在数组里面查

System.out.println(msg);for(int i=0;i

System.out.println(msg);

System.out.println(arr[i]);return;

}

}

System.out.println("---没有这个学生存在---");

}//更新信息

public void update(int on,String name,intage,Student[] arr){for(int i=0;i

arr[i].setName(name);

arr[i].setAge(age);

System.out.println("-----更新学生信息成功-----");this.print(arr);//更新信息

return;

}

}

System.out.println("没找到这个学生更新信息失败");

}//删除学生方法

public void delete(inton,Student[] arr){for(int i=0;i

arr[i]=null;this.print(arr);return;

}

}

System.out.println("您所指定的编号的学生没有存在");

}//输入学生成绩的操作

public void input(inton,Student[] arr){for(int i=0;i

System.out.println("请输入"+arr[i].getName()+"的Java的成绩");

Scanner in=newScanner(System.in);if(in.hasNextInt()){//如果用户输入的是int值,就把这个值传给它

arr[i].setJava(in.nextInt());

}

System.out.println("请输入"+arr[i].getName()+"的c#的成绩");if(in.hasNextInt()){

arr[i].setC_shar(in.nextInt());

}

System.out.println("请输入"+arr[i].getName()+"的html的成绩");if(in.hasNextInt()){

arr[i].setHtml(in.nextInt());

}

System.out.println("请输入"+arr[i].getName()+"的sql的成绩");if(in.hasNextInt()){

arr[i].setSql(in.nextInt());

}this.print(arr);break;

}

}

}//根据某门课程进行排序

public void courseSort(intnum,Student[] arr){if(num==1){for(int i=0;i

Student t=arr[i];

arr[i]=arr[j];

arr[j]=t;

}

}

}

}

}else if(num==2){for(int i=0;i

Student t=arr[i];

arr[i]=arr[j];

arr[j]=t;

}

}

}

}

}else if(num==3){for(int i=0;i

Student t=arr[i];

arr[i]=arr[j];

arr[j]=t;

}

}

}

}

}if(num==1){for(int i=0;i

Student t=arr[i];

arr[i]=arr[j];

arr[j]=t;

}

}

}

}

}this.print(arr);

}//根据总分进行排序操作

public voidsumSort(Student[] arr){for(int i=0;i

Student t=arr[i];

arr[i]=arr[j];

arr[j]=t;

}

}

}

}this.print(arr);

}

}

import java.util.*;public classTest {public static voidmain(String[] args){

System.out.println("----------请定义人数----------");

Scanner in=newScanner(System.in);

Student[] stuArr=new Student[in.nextInt()];//in.nextInt()用来接收用户输入的整型,数组的长度和输入的人数是一致的。

Admin adminStu=newAdmin();while(true){

System.out.println("-----请选择你要执行的功能:-----");

System.out.println("10:添加一个学生");

System.out.println("11:查找一个学生");

System.out.println("12:根据学生编号更新学生基本信息");

System.out.println("13:根据学生编号删除学生信息");

System.out.println("14:根据编号输入学生的各门成绩");

System.out.println("15:根据某门成绩进行排序");

System.out.println("16:根据总分进行排序");

System.out.println("99:退出系统");

String number=in.next();if(number.equals("10")){

System.out.println("请输入学生的姓名:");

String name=in.next();

System.out.println("请输入学生的年龄:");int age=in.nextInt();

adminStu.create(name, age, stuArr);//添加学生

}else if(number.equals("11")){

System.out.println("执行查找学生的基本操作");

System.out.println("请输入学生的编号进行查找:");int on=in.nextInt();//接收编号

adminStu.select(on,stuArr);//调用查找

}else if(number.equals("12")){

System.out.println("-----更新成员的基本信息-----");

System.out.println("输入学生的编号");int on=in.nextInt();

System.out.println("请输入学生的姓名");

String name=in.next();

System.out.println("请输入学生的年龄");int age=in.nextInt();

adminStu.update(on,name,age,stuArr);

}else if(number.equals("13")){

System.out.println("-----执行删除学生的操作-----");

System.out.println("请输入学生的编号");int on=in.nextInt();

adminStu.delete(on,stuArr);

}else if(number.equals("14")){

System.out.println("-----执行输入成绩的操作-----");

System.out.println("请输入学生的编号");int on=in.nextInt();

adminStu.input(on,stuArr);

}else if(number.equals("15")){

System.out.println("-----执行根据成绩排序的操作-----");

System.out.println("请选择用什么成绩进行排序?(1.Java 2.c# 3.Html 4.Sql)");int num=in.nextInt();

adminStu.courseSort(num,stuArr);

}else if(number.equals("16")){

System.out.println("-----根据总分进行排序的操作-----");

adminStu.sumSort(stuArr);

}else if(number.equals("99")){

System.out.println("程序已经退出");

System.exit(0);//退出。也可以用break break是跳出循环,exit不是跳出循环,而是直接结束

}

}

}

}

添加人员(增)

4387395735ed618e035db33052d95d28.png

录入成绩

16e399369642a935f8d2b95bdd3576ef.png

删除人员(删)

143b306484073f89cdedc9294b17becf.png

更改信息(改)

826489b6ef28a9e9936999792838a354.png

排序

a750124365063e2a45c612b6920ed160.png

查找

f573a45653285348fc4cb3ff4903276d.png

异常情况

e6d13fb653fb7b24f0b6657c6eafae2a.png

9e4c0dae24e8f93efff4095ca5f339e8.png

用debug调试

6fb9443844ac5048b0f98057407c2973.png

代码托管(https://gitee.com/zxjacdl/zxj175221/tree/master/20175221exp1)

f44926fd8b99cd3569913a344abd1d13.png

三、实验总结与体会

1.IDEA中一些快捷键

生成public static void main(String[] args) { }

psvm

生成System.out.orintln()

sout

选择 Debug

Alt+Shift+F9

参考博客:

IDEA快捷键的使用

https://github.com/judasn/IntelliJ-IDEA-Tutorial/blob/master/keymap-introduce.md#ctrl

2.IDEA一个很好的功能就是智能补全,善于利用可以节省很多时间。并且IDEA的报错直截了当,方便马上找到错误的问题所在。

3.通过统计下图,发现需求分析划分时间过短,代码实现时间过长,分配时间这一块做的很不合理,这是我需要改进的地方

步骤耗时百分比

需求分析

3min

1.8%

设计

20min

12.3%

代码实现

120min

73.6%

测试

10min

6.1%

分析总结

10min

6.1%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值