注:按Java规范书写程序代码,如果你认为程序有错误,请指出,并说明程序错误原因。
1.(2分)
写出程序结果
class Demo
{
public static void func()
{
try
{
throw new Exception();
}
finally
{
System.out.println(“B”);
}
}
public static void main(String[] args)
{
try
{
func();
System.out.println(“A”);
}
catch(Exception e)
{
System.out.println(“C”);
}
System.out.println(“D”);
}
}
(2分)
写出程序结果
class Test
{
Test()
{
System.out.println("Test");
}
}
class Demo extends Test
{
Demo()
{
System.out.println("Demo");
}
public static void main(String[] args)
{
new Demo();
new Test();
}
}
Test
Demo
(2分)
写出程序结果
interface A{}
class B implements A
{
public String func()
{
return “func”;
}
}
class Demo
{
public static void main(String[] args)
{
A a=new B();
System.out.println(a.func());
}
}
(2分)
写出程序结果:
class Super
{
int i=0;
public Super(String a)
{
System.out.println(“A”);
i=1;
}
public Super()
{
System.out.println(“B”);
i+=2;
}
}
class Demo extends Super
{
public Demo(String a)
{
System.out.println("C");
i+=5;
}
public static void main(String[] args)
{
int i=4;
Super d=new Demo(“A”);
System.out.println(d.i);
}
}
(2分)
写出程序结果
class Super
{
int i=0;
public Super(String s)
{
i=1;
}
}
class Demo extends Super
{
public Demo(String s)
{
i=2;
}
public static void main(String[] args)
{
Demo d=new Demo(“yes”);
System.out.println(d.i);
}
}
class Demo
{
public static void main(String[] args)
{
try
{
throw new Exc1();
}
catch(Exception e)
{
System.out.println(“Exception”);
}
catch(Exc0 e)
{
System.out.println(“Exc0”);
}
}
}
编译失败,类型提升导致Exception e变成了异常的父类出现在最前面。 ====================================================================
14. (2分)
写出程序结果
class Test
{
public static String output=”“;
public static void foo(int i)
{
try
{
if(i==1)
throw new Exception();
output+=”1”;
}
catch(Exception e)
{
output+=”2”;
return;
}
finally
{
output+=”3”;
}
output+=”4”;
}
public static void main(String args[])
{
foo(0);
System.out.println(output);
foo(1);
System.out.println(output);
}
}
134
13423
====================================================================
15. (2分)
写出程序结果
public class Demo
{
private static int j = 0;
private static boolean methodB(int k)
{
j += k;
return true;
}
public static void methodA(int i)
{
boolean b;
b = i < 10 | methodB (4);
b = i < 10 || methodB (8);
}
public static void main (String args[] )
{
methodA (0);
System.out.println(j);
}
}
(5分)
选择题。写出错误答案错误的原因,用单行注释的方式。
class Demo
{
public void func()
{
//位置1;
}
class Inner{}
public static void main(String[] args)
{
Demo d=new Demo();
// 位置2
}
}
A.在位置1写 new Inner();//可以
B.在位置2写 new Inner();// 不可以,需要fianl修饰
C.在位置2写 new d.Inner(); // 格式错误
D.在位置2写 new Demo.Inner();//inner不是静态
E.在位置2写 new Demo().new Inner();//可以
====================================================================
18. (4分)
代码补足题
interface Inter
{
void show(int a,int b);
void func();
}
class Demo
{
public static void main(String[] args)
{
//补足代码;调用两个函数,要求用匿名内部类
Inter i = new Inter()
{
public void show(int a,int b){}
public void func(){}
}
I.show(4,5);
I.func();
}
(4分)
interface A
{
void show();
}
interface B
{
void add(int a,int b);
}
class C implements A,B
{
//补足程序代码
private int a ;
private int b ;
public void add(int a,int b)
{
this.a = a;
this.b = b;
}
public void show()
{
System.out.println(“a+b=”+(a+b));
}
}
class D
{
public static void main(String[] args)
{
C c=new C();
c.add(4,2);
c.show();//通过该函数打印以上两个数的和。
}
}
====================================================================
20. (4分)
interface Test
{
void func();
}
class Demo
{
public static void main(String[] args)
{
//通过主函数调用show,补足代码;通过(匿名内部类)进行show方法参数传递。
new Demo().show(new Test()
{
public void func(){}
});
}
void show(Test t)
{
t.func();
}
}
====================================================================
21. (4分)
补足compare函数内的代码,不许添加其他函数。
class Circle
{
private static double pi=3.14;
private double radius;
public Circle(double r)
{
radius=r;
}
public static double compare(Circle[] cir)
{
//补足程序代码
double max = cir[0].radius;
for (int i=1;i
(4分)
补足compare函数内的代码,不许添加其他函数。
class Circle
{
private double radius;
public Circle(double r)
{
radius=r;
}
public Circle compare(Circle cir)
{
//补足程序代码
if(this.radius>cir.radius)
return this;
return cir;
}
}
class TC
{
public static void main(String[] args)
{
Circle cir1=new Circle(1.0);
Circle cir2=new Circle(2.0);
Circle cir;
cir=cir1.compare(cir2);
if(cir1==cir)
System.out.println(“cir 1的半径比较大”);
else
System.out.println(“cir 2的半径比较大”);
}
1,被final修饰类不可以被继承。
2,final修饰的方法不能被覆盖。
3,final修饰的变量只能被赋值一次。
====================================================================
24. (10分)
建立一个图形接口,声明一个面积函数。圆形和矩形都实现这个接口,并得出两个图形的面积。
注:体现面向对象的特征,对数值进行判断。用异常处理。不合法的数值要出现“这个数值是非法的”提示,不再进行运算。
//自定义异常,继承RuntimeException
class NoValueException extends RuntimeException
{
NoValueException(String msg)
{
super(msg);
}
}
//建立一个图形接口,声明面积
interface TuXing
{
double area();
}
//建立圆形,实现图形接口
class Yuan implements TuXing
{
private static final double PI = 3.14;
double d;
Yuan(double d)
{
if(d<=0)
throw new NoValueException(“这个数值是非法的”);
this.d = d;
}
//实现接口
public double area()
{
return d*d*PI;
}
}
//建立矩形,实现图形接口
class JuXing implements TuXing
{
private double width;
private double height;
JuXing(double width,double height)
{
if(width<=0 || height <= 0 )
throw new NoValueException(“这个数值是非法的”);
this.width = width;
this.height = height;
}
//实现接口
public double area()
{
return width*height;
}
}
class Demo
{
public static void main(String[] args)
{
Yuan y = new Yuan(1);
JuXing j = new JuXing(2,-1);
System.out.println("Hello World!");
}
}
====================================================================
25. (10分)
假如我们在开发一个系统时需要对员工进行建模,员工包含 3 个属性:
姓名、工号以及工资。经理也是员工,除了含有员工的属性外,另为还有一个
奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方
法进行属性访问。
/*
假如我们在开发一个系统时需要对员工进行建模,员工包含 3 个属性:
姓名、工号以及工资。经理也是员工,除了含有员工的属性外,另为还有一个
奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方
法进行属性访问。
*/
//建立一个抽象员工类。
abstract class Employee
{
private String name;
private String id;
private double pay;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setId(String id)
{
this.id = id;
}
public String getId()
{
return id;
}
public void setPay(double pay)
{
this.pay = pay;
}
public double getPay()
{
return pay;
}
Employee(String name,String id,double pay)
{
this.name = name;
this.id = id;
this.pay = pay;
}
}
//建立一般员工类,继承抽象员工类
class Worker extends Employee
{
Worker(String name,String id,double pay)
{
super(name,id,pay);
}
}
//建立经理类,继承抽象员工类
class Manager extends Employee
{
private double bonus;
public void setBonus(double bonus)
{
this.bonus = bonus;
}
public double getBonus()
{
return bonus;
}
Manager(String name,String id,double pay)
{
super(name,id,pay);
}
}
class Demo2
{
public static void main(String[] args)
{
Manager m = new Manager(“加”,”123”,123);
m.setBonus(123);
System.out.println(m.getName());
System.out.println(m.getBonus());
}
}
====================================================================
26. (10分)
在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,
如果存在,则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),
否则,返回-1。要搜索的字符数组和字符都以参数形式传递传递给该方法,
如果传入的数组为null,应抛出IllegalArgumentException异常。
在类的main方法中以各种可能出现的情况测试验证该方法编写得是否正确,
例如,字符不存在,字符存在,传入的数组为null等。
class Index
{
int[] arr;
int key;
Index(int[] arr,int key)
{
if(arr == null)
throw new IllegalArgumentException(“数组为空!”);
this.arr = arr;
this.key = key;
}
public int numIndex()
{
for(int i = 0;i < arr.length;i++)
{
if(arr[i] == key)
return i;
}
return -1;
}
}
class IndexNum
{
public static void main(String[] args)
{
int[] x = new int[]{11,12,13,14,15,16,17,};
Index i = new Index(x,12);
int numIndex = i.numIndex();
System.out.println(“index=”+numIndex);
Index i1 = new Index(x,42);
int numIndex1 = i1.numIndex();
System.out.println(“index1=”+numIndex1);
Index i2 = new Index(null,12);
int numIndex2 = i2.numIndex();
System.out.println(“index2=”+numIndex2);
}
}
====================================================================
到了第二阶段,对自己说的是?
改正学习方法,还需要多多的练习!
对老师和学校的建议和意见?