java 实验1
北京电子科技学院(BESTI)
实 验 报 告
课程:Java程序设计 班级:1352 姓名:杨光 学号:20135233
成绩: 指导教师:娄嘉鹏 实验日期:2015.4.14
实验密级: 预习程度: 实验时间:12:00~2:30
仪器组次:33 必修/选修:选修 实验序号:1
实验名称: JAVA开发环境的熟悉
实验目的与要求:
1. 使用JDK编译、运行简单的Java程序。
2.在命令行和Eclipse下编辑、编译、运行、调试简单的Java程序。
3.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》课程。
实验仪器:
名称 |
型号 |
数量 |
PC |
Acer |
1 |
虚拟机 |
实验楼 |
1 |
一、实验内容
1. 使用JDK编译、运行简单的Java程序
2.使用Eclipse 编辑、编译、运行、调试Java程序
实验知识点
1. JVM、JRE、JDK的安装位置与区别;
2. 命令行运行javac,java;javac -cp; java -cp;
3. PATH,CLASSPATH,SOURCEPATH的设定方法与应用;
4. 包管理:package;import;javac -d ;
5. Eclipse(Netbeans)管理Java项目,调试:断点、单步执行等;
6. Java基础语法:类型与类型转换;变量;运算符;流程控制等;
7. JDK帮助文档的使用;
二、实验步骤
(一)命令行下Java程序开发
首先双击桌面上的Xface终端图标
打开终端(类似Windows下的cmd),之后会自动运行shell程序
输入cd Code命令进入Code(注意C要大写)目录
输入mkdir 20135100 命令建立实验目录,注意目录名一定是自己的学号(学号要体现在实验报告截图中),可以使用ls命令或dir命令查看建立的目录情况。
输入cd 20135100命令进入实验目录,再输入类似mkdir exp1建立第一个实验目录,然后输入cd exp1进入实验一目录,可以输入pwd命令查看当前工作路径
输入gedit Hello.java(注意把代码保存到exp1目录中)或vim Hello.java(建议大家花点时间学习一下Vim)编辑Hello.java,并输入以下代码:
package ljp;
import java.util.Scanner;
public class Hello
{
public static void main(String[] args)
{
System.out.println("Input your first name, please:");
Scanner s = new Scanner(System.in);
String name = s.next();
System.out.println("Hello " + name + " !");
}
}
(二)Eclipse下Java程序开发、调试
在命令行中输入eclipse命令并回车或单击桌面上的Eclipse EE图标打开Eclipse
在Eclipse中单击File->New-> Java Project新建Java项目
输入项目名称HelloJDB(你可以自己起名),并单击Finish按钮完成新建项目
在Eclipse中单击File->New->Class新建Java类
5.根据Java代码规范输入包名ljp(小写),类名HelloJDB(单词首字母大写),并勾选上自动产生main函数选项,最后单击Finish按钮
6.输入如下代码:
package ljp;
public class HelloJDBe
{
public static void main(String[] args)
{
int i = 5;
int j = 6;
int sum = add(i, j);
System.out.println(sum);
sum = 0;
for(i=0; i< 100; i++)
sum += i;
System.out.println(sum);
}
public static int add(int augend, int addend)
{
int sum = augend + addend; 18 return sum;
}
}
7.单击运行按钮(或使用Ctrl+F11快捷键),就可以在控制台(Console)中看到运行结果。
8.下面我们练习调试程序,首先我们通过单击Window->Open Perspective->Debug打开调试视图,
9.调试程序首先要会设置断点和单步运行。设置断点比较简单,然后单击调试按钮(或使用F11快捷键)开始调试Java程序,我们可以看到程序停留在了第4行,如下图所示: 注意,此时第4行代码并没有执行,我们可以把鼠标放到变量名上来查看变量的值,此时i的值并不是5,我们通过单步运行让程序运行到第5行,单步运行有两种:Step Into(快捷捷F5)和Step Over(快捷捷F5),这两种单步运行功能在运行语句时没有区别,在执行函数调用语句时,Step Into会跳入函数实现,Step Over会直接执行完函数,实际使用中我们优先使用Step Over,只有函数执行出错了,说明程序问题在被调用函数中,这时再回来通过Step Into进入函数进行调试。我们单击一下Step Over图标(或F6),程序停在了第5行,这时查看变量i的值,会看到i等于5。
10.单步执行效率比较慢,如果我们感觉到第6行到第10行的代码没有问题了,想让程序直接运行到第11行,怎么办?首先我们要在第11行设置断点,然后单击Resume图标(快捷键F8),程序就运行到了第11行,如下图所示:
11.单步执行效率比较慢还导致另外一个问题,比如一个大循环中间出了问题怎么办?这时可以通过条件断点解决问题。调试循环代码时,会有一个值我们特别关注,这时在Variable标签中查看变量的值,比如我们此时比较关注sum,每次单步执行都可以看到sum的变化情况了,
设置条件断点,我们在第11行左边单击鼠标右键,选择Breakpoint Properties
我们设置条件“i==50”
按一下F8,我们可以查看i的是50了。
(三)练习
(通过命令行和Eclipse两种方式实现,自己的学号后两位与题目总数取余的结果就是自己要完成的题号,在Eclipse下练习调试程序)
实验4 学生成绩管理系统
package 学生成绩管理系统;
import java.util.Scanner;
public class Text1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum=0;
int average=0;
Scanner input=new Scanner(System.in);
System.out.println("请输入学生总人数:");
int number=0;
number=input.nextInt();
System.out.println("请输入课程门数:");
int coursesnum=0;
coursesnum=input.nextInt();
String [] coursesname=new String[coursesnum];
for(int i=0;i<coursesname.length;i++)
{
System.out.println("请输入第"+(i+1)+"门课的名字:");
coursesname[i]=input.next();
}
String [] name=new String[number];
String [] ID=new String[number];
int [][] score=new int[number][coursesnum];
for(int i=0;i<name.length;i++)
{
System.out.println("请输入第"+(i+1)+"个学生的名字:");
name[i]=input.next();
System.out.println("请输入第"+(i+1)+"个学生的学号:");
ID[i]=input.next();
for(int j=0;j<coursesname.length;j++)
{
System.out.println("请输入"+name[i]+" "+coursesname[j]+"的成绩:");
score[i][j]=input.nextInt();
}
}
int [] scoreSum=new int [number];
int [] rank=new int[number];
for(int i=0;i<number;i++)
{
for(int j=0;j<coursesnum;j++)
{
sum+=score[i][j];
}
scoreSum[i]=sum;
rank[i]=sum;
sum=0;
}
for(int i=0;i<number-1;i++)
{
for(int j=i+1;j<number;j++)
{
if(rank[i]<rank[j])
{
int temp=rank[j];
rank[j]=rank[i];
rank[i]=temp;
}
}
}
System.out.print("学生\t");
System.out.print("学号\t");
for(int i=0;i<coursesnum;i++)
{
System.out.print(coursesname[i]+"\t");
}
System.out.print("总分\t");
System.out.print("平均分\t");
System.out.print("排行榜");
System.out.print("\n");
int[] temp=new int[number];
for(int i=0;i<temp.length;i++)
{
for(int j=0;j<scoreSum.length;j++)
{
if(rank[i]==scoreSum[j])
{
temp[i]=j;
}
}
}
for(int i=0;i<number;i++)
{
System.out.print(name[temp[i]]+"\t");
System.out.print(ID[temp[i]]+"\t");
for(int j=0;j<coursesnum;j++)
{
System.out.print(score[temp[i]][j]+"\t");
}
System.out.print(scoreSum[temp[i]]+"\t");
System.out.print((scoreSum[temp[i]]/coursesnum)+"\t");
System.out.print("第"+(i+1)+"名");
System.out.print("\n");
}
}
}
五、实验分析与总结
(一)注意事项
1.代码中有package时,使用javac编译代码时一定要加-d参数,运行代码时一定要加包名前缀。
(二)遇到的问题及解决方法
实验(一)中出现无效的标记:-d的错误
决解方法:没有注意书写格式,正确格式应为:javac -d . Hello.java,-d前和后均有一个空格,改正后无错误。
(三)实验总结体会
通过本次实验,完成了使用JDK编译、运行简单的Java程序和使用Eclipse 编辑、编译、运行、调试Java程序的学习与熟悉。
但是步骤都还不是很熟练,知识也不是很巩固,以后要多加练习才行!
java 实验1的更多相关文章
- Java实验五
20145113 Java实验五 网络编程及安全 实验内容 对于客户端与服务器端:修改原代码,使其可以实现连续的传消息,并且传送文件. 对于加解密部分: 对于原先的加密只加密"hello w ...
- Java实验四
20145113 Java实验四 快捷键 之前没怎么记ISDEA的快捷键,但是熟练使用快捷键可以带来很多的便利,于是先开始学习一些常用的快捷键,就采用它默认的快捷键,这样后期就不会出现冲突,一些and ...
- Java实验一
20145113 Java实验一 使用JDK编译.运行简单的Java程序 安装JDK并配置相关环境 安装JDK后配置环境变量 计算机→属性→高级系统设置→高级→环境变量 新建 JAVA_HOME 变量 ...
- Java实验二20135104
课程:Java程序设计 班级: 1351 姓名:刘帅 学号:20135104 成绩: 指导教师:娄嘉鹏 实验日期:2 ...
- Java实验报告五:Java网络编程及安全
Java实验报告五:Java网络编程及安全 ...
- Java实验报告二:Java面向对象程序设计
Java实验报告二:Java面向对象程序设计 ...
- java实验一实验报告
Java实验报告一:Java开发环境的熟悉 ...
- java实验报告三 敏捷开发与XP
20145306 java 实验三 实验报告 实验内容 1.git下载结对同学的代码 2.修改结对同学的代码 3.实现代码重构 实验步骤 新建存储空间 git下载代码 将修改后的代码上传 上传结果 重 ...
- 20145102 Java 实验一
20145102 Java 实验一 Java环境的安装 就像第一周写的一样,在linux下java的安装和配置简直简单的不行不行的,一个命令足以: sudo pacman -S jdk 配置什么的也就 ...
- 第四次java实验
java实验 实验一: 要求 Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第 ...
随机推荐
- UVa 10377 - Maze Traversal
題目:一個機器人在迷宮中行走,它的指令是方向控制(前進.左轉.右轉).給你初始位置和一些指令: 問最後停在那個位置. 分析:模擬.直接模擬就可以,注意一下細節. 假设,不能行走(邊界或者是墻壁)則停在 ...
- iOS 输入框限制输入字节数
iOS中限制输入框文字长度的方法有好多,百度一下,最常用的是这种: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersI ...
- PHP与nginx之间的运行机制及其原理
一.普及Nginx与Php-fpm相关知识点 Nginx是什么 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服 ...
- Fiddler设置代理后,iphone手机无法访问网络的全面解决办法
好久不抓手机包,都有些忘记了,电脑上软件都在,原本是Fiddler4,现在已自动升级到V5. 入主题吧,首先Fiddler设置好代理,然后手机安装证书好了,设置手机代理,结果iphone无法访问网络, ...
- 小米路由器设置端口转发远程登录WEB管理页及安装MT工具箱
1. 将小米路由器ROM升级到开发版 这一点是必须的,如果是稳定版是不行的 2. 获取高级管理权限 再次确认当前使用的是开发版ROM 到这个网址http://d.miwifi.com/rom/ssh ...
- nRF52832 改变ATT_MTU提高蓝牙数据发送速率(nRF5_SDK_14.2.0)
nRF52832 作为一个低功耗蓝牙芯片,其数据发送发送速率一直都偏低(高就不叫低功耗了^_^),作为初学者在网上找了很多资料,终于找到通过修改ATT_MTU来提升发送速率的方法,最快能达到8.2KB ...
- 补交课下测试(ch12并发编程) 08.第八周
有关线程图,下面说法正确的是() A .图的原点表示没有任何线程完成一条指令的初始状态 B . 向右向上是合法的转换 C .向左向下是合法的转换 D .对角线是合法的转换 E .一个程序执行的历史被模 ...
- Android开发——代码中实现WAP方式联网
,移动和联通的WAP代理服务器都是10.0.0.172,电信的WAP代理服务器是10.0.0.200. 在Android系统中,对于获取手机的APN设置,需要通过ContentProvider来进行数 ...
- 【LNOI2014】LCA
题面 题解 考察\(dep[\mathrm{LCA}(i, x)]\)的性质,发现它是\(i\)和\(x\)的链交的长度. 那么对每个\(i\)所在的链打一个区间加标记,询问时算一下\(x\)所在的链 ...
- P1402 酒店之王
P1402 酒店之王 每个人要匹配一个A和一个B,所以这样连边: S向每个房间连边. 每个房间向喜欢这个房间的人连边. 每个人向喜欢的菜连边. 每道菜向T连边. 边权均为1. 注意人要限流. // I ...