1、《Java程序设计》上机作业(一) 学号: 姓名: 上机作业要求: 请根据题目的要求,将题目答案、程序源代码、运行结果截图统一填入本word文档中,并将本文档更名为“Java_学号_姓名_Lab1.doc”在第3周周日24:00之前以附件的形式发送到ustblili@,邮件的题目设置为“Java_学号_姓名_上机(1)” 。 请严格按照以上名称发送邮件,否则邮箱自动拒收,视为未交该次作业。 《Java程序设计》上机题(一) 1. Java为什么能跨平台运行?请简述原理。 答:因为Java程
2、序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。 2. 请尝试安装和配置JDK,并给出安装、配置JDK的步骤。 答: (1)双击下载的安装文件启动安装程序,安装程序会开始准备安装 (2)准备好后,会看到“许可证协议”对话框,单击“接受”按钮弹出“自定义安装”对话框。 (1) (2) (3) 可以更改安装位置,单击“下一步”按钮继续。然后会看到安装进度对
3、话框。 (4) 中途出现JRE自定义安装对话框,单击下一步按钮继续。 (5) 之后是安装进度对话框。 (6) 安装结束。 (7) 配置环境变量,首先右击“我的电脑”,在弹出的快捷菜单中选择“属性” 命令,弹出“系统属性”对话框。选择“高级”标签,进入“高级”选项卡找到“环境变量”按钮。 (8) 单击“系统变量”面板下的“编辑”按钮,在弹出的“编辑系统变量”对话框中,将光标移到“变量值”文本框的最前端,将“JDK安装目录\bin;”添加到里面。 (9) 修改完毕后单击“确定”按钮。这是会回到“环境变量”对话框。单击“系统变量”面板中的添加按钮,在弹出的“新建系统变量”对话框中添加C
4、LASSPATH变量,变量的值为“.;C:\Program Files\Java\jdk1.6.0_14\lib”,也就是“.”+“;”+“JDK安装目录”+“\lib”。 (10) 添加完毕后单击“确定”按钮,回到“环境变量”对话框。然后再单击“系统变量” 面板中的“添加”按钮,在弹出的“编辑系统变量”对话框中添加JAVA_HOME变量,变量值为“C:\Program Files\Java\jdk1.6.0_14”,也就是“JDK安装目录”。 (11)添加完毕后单击“确定”按钮,回到“环境变量”对话框。单击“环境变量”对话框最下方的“确定”按钮完成对环境变量的修改和添加。 3.
5、请问配置JDK时环境变量path和CLASSPATH的作用是什么? 答:1. PATH环境变量。作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。 2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH
6、来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。 以下4-7题请在JDK环境下编译和运行。 4. 利用文本编辑器输入课件《第一节 Java语言简介》中的MyJavaApplication.java,并在JDK环境下编译和运行。请将程序编译、运行的结果截图,填入下框中。 5. 如果第4题中在DOS命令下输入:java MyJavaApplication 出现以下结果:Bad command or the file name 可能是什么原因?请说明理由。 答:错误的
7、命令或文件名,说明输入的命令有问题,有可能是因为没有设置环境变量,而导致系统找不到java的编译软件 6. 如果第4题中在DOS命令下输入:java MyJavaApplication 出现以下结果:Exception in thread “main” java.lang.NoClassDefFoundError: MyJavaApplication 可能是什么原因?请说明理由。 答:如果出现了以上错误提示,常见问题有如下两种:1 大小写写错了, 2 路径不正确。 7. 在第4题中MyJavaApplication.class所在路径下, 输入命令:java MyJavaA
8、pplication.class,会出现什么结果,为什么? 答:编译完生成.class文件,要执行须输入java MyJavaApplication 以下题目请在Eclipse环境下编译和运行。 8. 编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。 注:系统类Math位于java.lang包中,圆周率π可以由Math类的静态属性PI得到,其定义为“public static final double PI = 3.14159265358979323846;”。 请将源程序文本填入下框: public class Test { public stati
9、c void main(String[] args) { double I=3.0; double perimeter=2*Math.PI*I; double area=I*I*Math.PI; System.out.println("周长"+perimeter); System.out.println("面积"+area); } } 运行结果截图: 9. 编写一个Java程序,计算一下1,2,…,9这9个数字可以组成多少个互不相同的、无重复数字的三位偶数。 请将源程序文本填入下框: public class Three{ private int i;
10、 private int j; private int k; public int counter() { int count=0; for(i=1;i<=9;i++) for(j=1;j<=9;j++) for(k=2;k<=8;k++) { if(i!=j&&j!=k&&i!=k&&(k%2)==0) { count++; } } return count; } } class countIt{ public static void main(String[]a
11、rgs){ Three myThree=new Three(); System.out.println("总共有"+myThree.counter()+"个互不相同无重复数字的三位偶数。"); } } 运行结果截图: 10. 求m+mm+mmm+…+m…m(n个)的和,其中m为1~9之间的整数。 例如,当m=3、n=4时,求3+33+333+3333的和。 要求:将m和n定义为类的属性,在构造函数中对m和n进行赋值。 请将源程序文本填入下框: import java.util.Scanner; public class repeatNumber {
12、 private int m; private int n; public repeatNumber(){ Scanner scan=new Scanner(System.in); System.out.println("请输入一个m(1~9之间的整数)"); m =scan.nextInt(); System.out.println("请输入一个数n(n>=1)作为加数的个数:"); n =scan.nextInt(); } public int Sumer(){ int sum=0; int i=0,j=0,k=0;
13、 for(i=1;i<=n;i++) { for(j=1;j<=i;j++) { if(j==1) { k=m; } else k+=k*10; } sum+=k; k=0; } return sum; } } class myRepeatNumber{ public static void main(String[] args) { repeatNumber TheRepeater = new repeatNumber();
14、 System.out.println("求和得到的结果是:"+TheRepeater.Sumer()); } } 运行结果截图: 11. 给定一个正整数m,统计m的位数,分别打印每一位数字,再按照逆序打印出各位数字。 要求:m定义为类的属性,需定义构造函数为m赋值;当m大于99999时,输出错误信息“the number is too large”,不再执行。 请将源程序文本填入下框: import java.util.Scanner; public class printTheNumber { private long m; public prin
15、tTheNumber(){ Scanner scan=new Scanner(System.in); System.out.println("请输入一个正整数m:"); m=scan.nextInt(); } public void PrintIt(){ int[] a; long x=m; a=new int[100]; int i=0,j,k=0; long h; if(m>99999) System.out.println("Sorry ,the number is too large!"); else{
16、 for(j=1;;j++)
{
h=x/10;
x=h;
if(h==0)
{ System.out.println("m的位数为:"+j);
break;
}
}
for(k=j-1;k>=0;k--)
{
a[k]=(int)m%10;
m=m/10;
}
System.out.println("正序输出为:"+'\n');
for(i=0;i 17、"+i+"个数字是"+a[i]+'\n');
}
System.out.println("逆序输出为:"+'\n');
for(i=j-1;i>=0;i--)
{
System.out.println("第"+i+"个数字是"+a[i]+'\n');
}
}
}
}
class myPrintTheNumber{
public static void main(String[] args){
printTheNumber PrintItOut=new printTheNumber();
PrintIt 18、Out.PrintIt();
}
}
运行结果截图:
12. 给定一个正整数m,统计m的位数,分别打印每一位数字,再按照逆序打印出各位数字。
要求:m定义为类的属性,需定义构造函数为m赋值; m的值无限制。
请将源程序文本填入下框:
import java.util.Scanner;
public class printTheNumber {
private long m;
public printTheNumber(){
Scanner scan=new Scanner(System.in);
System.out.println("请输 19、入一个正整数m:");
m=scan.nextInt();
}
public void PrintIt(){
int[] a;
long x=m;
a=new int[100];
int i=0,j,k=0;
long h;
for(j=1;;j++)
{
h=x/10;
x=h;
if(h==0)
{ System.out.println("m的位数为:"+j);
break;
}
}
for(k=j-1;k>=0;k--)
20、 {
a[k]=(int)m%10;
m=m/10;
}
System.out.println("正序输出为:"+'\n');
for(i=0;i 21、
class myPrintTheNumber{
public static void main(String[] args){
printTheNumber PrintItOut=new printTheNumber();
PrintItOut.PrintIt();
}
}
运行结果截图:
13. 编写一个学生类,该类具有属性“姓名”name、学号id、综合成绩total、体育成绩sports,构造方法、以及查询学生的综合成绩和体育成绩的方法;生的构造方法带有四个参数,分别设置学生的姓名、考号、综合成绩和体育成绩。
编写一个学校类,该类具有属性“录取分 22、数线”line、构造方法、对该属性进行设置和查询的方法,以及一个判断判断某个学生是否符合该学校的录取条件的方法。录取条件为:综合成绩在录取分数线以上,或者体育成绩在95以上并且综合成绩大于300。在该类的main()方法中,新建若干个学生对象(5个以上,应覆盖各种情况),对符合录取条件的学生,输出其相关信息及“被录取”。
请将源程序文本填入下框:
import java.util.Scanner;
import java.io.*;
public class Student {
public String name;
public String id;
private 23、 int sports;
private int total;
public Student() throws IOException{
Scanner scan=new Scanner(System.in);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入该学生的姓名:"+'\t');
name=br.readLine();
System.out.println("请输入该学生的学号:"+'\t');
id 24、br.readLine();
System.out.println("请输入该学生的总成绩:"+'\t');
total=scan.nextInt();
System.out.println("请输入该学生的体育成绩:"+'\t');
sports=scan.nextInt();
}
public int TotalScore(){
int Tscore;
Tscore=total;
return Tscore;
}
public int SportScore(){
int Sscore;
Sscore=sports;
25、
return Sscore;
}
}
class School{
private static int line=600;
private static int k=0;
private static String code="123456";
private static String YourCode;
public School(){
Scanner scan=new Scanner(System.in);
System.out.println("请输入本校录取分数线:");
line=scan.nextInt();
}
pu 26、blic static void CheckAndChange() throws IOException{
int i=0,m;
boolean j;
System.out.println("请选择执行的操作:"+'\t'+"1、查询录取分数"+'\t'+"2、修改录取分数"+'\t');
Scanner scan=new Scanner(System.in);
i=scan.nextInt();
if(i==1)
{
System.out.println("本校的录取分数线是:"+line);
}
if(i==2)
{ 27、BufferedReader bi=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入管理员密码:");
YourCode=bi.readLine();
m=YourCpareTo(code);
if(m!=0)
j=true;
else
j=false;
while(j)
{
System.out.println("您输入的密码错误!请重新输入") ;
k++;
if(k==3)
{ 28、
System.out.println("输入次数已达三次!"); k=0;
break;
}
System.out.println("请输入管理员密码:");
YourCode=bi.readLine();
m=YourCpareTo(code);
if(m!=0)
j=true;
else
j=false;
}
if(!j)
{
System.out.println("请输入新的录取分数线:");
line=scan.nextInt() 29、
}
}
}
public static void Admission(Student Someone){
if(Someone.SportScore()>95&&Someone.TotalScore()>300)
{
System.out.println("恭喜你!"+Someone.name+"同学,"+"你被本校录取了!"+'\t');
}
else if(Someone.TotalScore()>=line)
{
System.out.println("恭喜你!"+Someone.name 30、"同学,"+"你被本校录取了!");
}
else
System.out.println("非常抱歉!您没被本校录取。");
}
public static void main(String[] args) throws IOException{
int i,p;
Scanner scan=new Scanner(System.in);
System.out.println("请选择要查询的人名:1.zhang3 2.li4 3.xiaoming 4.xiaohu 5.xiaozhao");
p=scan.n 31、extInt();
switch (p) {
case 1:
{
Student zhang3=new Student();
System.out.println("请选择您需要的服务:"+"1.查询是否被录取"+"2.查询或修改本校录取分数线");
i=scan.nextInt();
switch (i) {
case 1:
Admission(zhang3);break;
case 2:
CheckAndChange();break;
}
}break;
case 2:
{
Stu 32、dent li4=new Student();
System.out.println("请选择您需要的服务:"+"1.查询是否被录取"+"2.查询或修改本校录取分数线");
i=scan.nextInt();
switch (i) {
case 1:
Admission(li4);break;
case 2:
CheckAndChange();break;
}
}break;
case 3:
{
Student xiaoming=new Student();
System.out.println("请 33、选择您需要的服务:"+"1.查询是否被录取"+"2.查询或修改本校录取分数线");
i=scan.nextInt();
switch (i) {
case 1:
Admission(xiaoming);break;
case 2:
CheckAndChange();break;
}
}break;
case 4:
{
Student xiaohu=new Student();
System.out.println("请选择您需要的服务:"+"1.查询是否被录取"+"2.查询或修改本校录取分数线");
34、i=scan.nextInt();
switch (i) {
case 1:
Admission(xiaohu);break;
case 2:
CheckAndChange();break;
}
}break;
case 5:
{
Student xiaozhao=new Student();
System.out.println("请选择您需要的服务:"+"1.查询是否被录取"+"2.查询或修改本校录取分数线");
i=scan.nextInt();
switch (i) {
case 1:
Admission(xiaozhao);break;
case 2:
CheckAndChange();break;
}
}break;
default:
System.out.println("查无此人,请核对后再查!");
break;
}
}
}
运行结果截图:






