20175221 实验一《Java开发环境的熟悉》实验报告
20175221 实验一《Java开发环境的熟悉》实验报告
(一)Linux运行结果
(二)IDEA下Java程序开发、调试:学会通过调试(Debug)来定位逻辑错误
试验IDEA是否正常
开始调试
lt+Shift+F9
)开始调试Java程序此时第5行代码没有被执行,变量sum的值并不是11,如图
Step Into
(F7)和Step Over
(快捷捷F8),优先使用Step Over,这时查看变量i的值,会看到sum等于11。如图:3.F9跳步
让程序直接运行到第9行,首先我们要在第9行设置断点,然后单击Resume图标(快捷键F9),如图:
4.条件断点
单步执行效率比较慢还导致另外一个问题,若一个大循环中间出了问题,这时可以通过条件断点解决问题。设置条件断点,我们在第9行左边断点处单击鼠标右键,弹出断点属性框,我们设置条件“i==50”,按F9,如图:
5.临时断点
断点只中断一次,比如我们想把第9,10行的for循环一下子运行完,我们就需要在第12行设个条件断点。我们可以在第十二行设个断点,然后鼠标右击断点:然后点「More」,选中「Remove Once hit」
(三)练习
4. 实现学生成绩管理功能(增删改,排序,查找),并进行测试(正常情况,异常情况,边界情况)。
代码编写:
public class Student {
private int on;
private String name;
private int age;
private int java;
private int c_shar;
private int html;
private int sql;
private int sum;
private int avg;
//一个属性具备两个方法赋值和取值
public void setOn(int on){
this.on=on;//把传递的参数赋值给当前的on
}
public int getOn(){//取值必须返回
return this.on;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
public int getJava() {
return java;
}
public void setJava(int java) {
this.java = java;
}
public int getC_shar() {
return c_shar;
}
public void setC_shar(int c_shar) {
this.c_shar = c_shar;
}
public int getHtml() {
return html;
}
public void setHtml(int html) {
this.html = html;
}
public int getSql() {
return sql;
}
public void setSql(int sql) {
this.sql = sql;
}
public int getSum() {
return sum;
}
public void setSum() {
this.sum = this.java+this.sql+this.html+this.c_shar;
}
public void setAvg() {
this.avg = (this.sum)/4;
}
public int getAvg() {
return avg;
}
//重写toString()方法,默认toString()返回的是哈希码值
public String 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;
return msg;
}
}
import java.util.*;
public class Admin { String msg="\t编号\t姓名\t年龄\tjava\tc#\thtml\tsql\t总分\t平均分";
//用来更新学生类的输出
public void print(Student[] arr){
System.out.println(msg);
for(int i=0;i<arr.length;i++){
if(arr[i]!=null){
arr[i].setSum();
arr[i].setAvg();
System.out.println(arr[i]);
}
}
}
//根据编号判断学生是否存在
public boolean exist(int on,Student stu){
if(stu!=null){
if(stu.getOn()==on){
return true;
}else{
return false;
}
}
return false;
}
//创建添加学生的方法
public void create(String name,int age,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<arr.length;i++){
if(arr[i]==null){
return i;
}
}
return 9999;
}
//查询方法
public void select(int on,Student[] arr){//接收编号,并且在数组里面查
System.out.println(msg);
for(int i=0;i<arr.length;i++){
if(this.exist(on, arr[i])){
System.out.println(msg);
System.out.println(arr[i]);
return;
}
} System.out.println("---没有这个学生存在---");
}
//更新信息
public void update(int on,String name,int age,Student[] arr){
for(int i=0;i<arr.length;i++){
if(this.exist(on, arr[i])){
arr[i].setName(name);
arr[i].setAge(age);
System.out.println("-----更新学生信息成功-----");
this.print(arr);//更新信息
return;
}
}
System.out.println("没找到这个学生更新信息失败"); }
//删除学生方法
public void delete(int on,Student[] arr){
for(int i=0;i<arr.length;i++){
if(this.exist(on, arr[i])){
arr[i]=null;
this.print(arr);
return;
}
}
System.out.println("您所指定的编号的学生没有存在");
}
//输入学生成绩的操作
public void input(int on,Student[] arr){
for(int i=0;i<arr.length;i++){
if(this.exist(on, arr[i])){
System.out.println("请输入"+arr[i].getName()+"的Java的成绩");
Scanner in=new Scanner(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(int num,Student[] arr){
if(num==1){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&&arr[j]!=null){
if(arr[i].getJava()<arr[j].getJava()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}
else if(num==2){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&&arr[j]!=null){
if(arr[i].getC_shar()<arr[j].getC_shar()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
} else if(num==3){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&&arr[j]!=null){
if(arr[i].getHtml()<arr[j].getHtml()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}
if(num==1){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&&arr[j]!=null){
if(arr[i].getSql()<arr[j].getSql()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
}
this.print(arr);
}
//根据总分进行排序操作
public void sumSort(Student[] arr){
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null&&arr[j]!=null){
if(arr[i].getSum()<arr[j].getSum()){
Student t=arr[i];
arr[i]=arr[j];
arr[j]=t;
}
}
}
}
this.print(arr);
} }
import java.util.*;
public class Test {
public static void main(String[] args){
System.out.println("----------请定义人数----------");
Scanner in=new Scanner(System.in);
Student[] stuArr=new Student[in.nextInt()];//in.nextInt()用来接收用户输入的整型,数组的长度和输入的人数是一致的。
Admin adminStu=new Admin();
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不是跳出循环,而是直接结束
} }
}
}
添加人员(增)
录入成绩
删除人员(删)
排序
查找
异常情况
用debug调试
代码托管(https://gitee.com/zxjacdl/zxj175221/tree/master/20175221exp1)
三、实验总结与体会
1.IDEA中一些快捷键
生成public static void main(String[] args) { }
psvm
生成System.out.orintln()
sout
选择 Debug
Alt+Shift+F9
参考博客:
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% |
20175221 实验一《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编辑器> 课程: 完成实验.撰写实验 ...
随机推荐
- Jmeter设置代理,抓包之app请求
步骤: 1. Jmeter选择测试计划,添加线程组,添加http请求,添加监听器-察看结果树 2. 添加http代理服务器,右键添加非测试元件-添加http代理服务器 3. 端口改为8889,目标控制 ...
- mysql安装出现问题(The service already exists)
1.管理员身份运行cmd(系统win10) 2.输入命令cd /d F:\mysql-5.7.19-win32\bin(此为mysql要安装的目录) 3.输入安装命令mysqld install 出现 ...
- 20181218-PostgreSQL数据库Extension管理
20181218-PostgreSQL数据库Extension管理 注意:在集群的一个数据库中安装扩展,在集群的另一个数据库要使用的话,仍需安装 1. 查看当前已安装Extension postgre ...
- Python变量之白首如新,倾盖如故
python中的变量变量:将运算的中间结果暂存到内存中,方便后续程序调用.变量的命名规则:1.变量名由字母.数字.下划线组成.2.变量名可以用字母.下划线开头,但是不能以数字开头.3.变量名是区分大小 ...
- 高德地图 Service 创建服务 USERKEY_PLAT_NOMATCH
在使用高的地图 创建服务的时候 { "errmsg": "USERKEY_PLAT_NOMATCH", "errcode": 10009, ...
- [RHEL 6]GPT分区--parted
对于2T以上的硬盘,划分分区表需要GPT分区,RHEL 6中使用parted进行分区 用法:parted [选项]... [设备 [命令 [参数]...]...] 将带有“参数”的命令应用于“设备”. ...
- Redis学习笔记(4)——Redis五大数据结构介绍以及应用场景
出处:https://www.jianshu.com/p/f09480c05e42 Redis是典型的Key-Value类型数据库,Key为字符类型,Value的类型常用的为五种类型:String.H ...
- Java Api Consumer 连接启用Kerberos认证的Kafka
java程序连接到一个需要Kerberos认证的kafka集群上,消费生产者生产的信息,kafka版本是2.10-0.10.0.1: Java程序以maven构建,(怎么构建maven工程,可去问下度 ...
- wxWidgets 和 QT 之间的选择
(非原创,网络摘抄) 跨平台的C++ GUI工具库很多,可是应用广泛的也就那么几个,Qt.wxWidgets便是其中的翘楚这里把GTK+排除在外,以C实现面向对象,上手相当困难,而且Windows平台 ...
- 第十一节,利用yolov3训练自己的数据集
1.环境配置 tensorflow1.12.0 Opencv3.4.2 keras pycharm 2.配置yolov3 下载yolov3代码:https://github.com/qqwweee/k ...