Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107852
  • 博文数量: 106
  • 博客积分: 2025
  • 博客等级: 大尉
  • 技术积分: 1165
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-06 12:51
文章分类

全部博文(106)

文章存档

2012年(106)

我的朋友

分类: Java

2012-05-07 17:43:43

源程序文件:zuoye2.java,类:Circle、TestCircle。

Circle类是对形状圆的抽象,包含一个表示圆半径的private的、int型的实例变量radius,其软件接口如下:

class Circle {

public void setRadius(int r); // 设置圆的半径

public double getArea(); // 计算圆的面积

public double getPerimeter(); // 计算圆的周长

public int getRadius(); // 返回圆的半径

}

注意,圆周率π可以使用常量Math.PI。

TestCircle是一个应该程序起始类,用于测试上面定义的Circle类,代码如下:

class TestCircle {

public static void main(String[] args) {

Circle c1 = newCircle();

c1.setRadius(1);

Circle c2 = newCircle();

c2.setRadius(5);

System.out.println(“r1=”+c1.getRadius());

System.out.println(“a1=”+c1.getArea()+”,p1=”+c1.getPerimeter());

System.out.println(“r2=”+c2.getRadius());

System.out.println(“a2=”+c2.getArea()+”,p2=”+c2.getPerimeter());

}

}

class Circle {

private int radius;

public void setRadius(int r){

radius=r;

}

public double getArea(){

return Math.PI*radius*radius;

}

public double getPerimeter(){

return 2*Math.PI*radius;

}

public int getRadius(){

return radius;

}

}

class TestCircle {

public static void main(String[] args) {

Circle c1 = new Circle();

c1.setRadius(1);

Circle c2 = new Circle();

c2.setRadius(5);

System.out.println("r1="+c1.getRadius());

System.out.println("a1="+c1.getArea()+",p1="+c1.getPerimeter());

System.out.println("r2="+c2.getRadius());

System.out.println("a2="+c2.getArea()+",p2="+c2.getPerimeter());

}

}

编程序。源程序文件:zuoye3.java,类:Zy3、TestZy3

类Zy3有一个表示年份的private的、int型的实例变量year,并包含以下两个方法:

public void set(int y); // 设置实例变量year的值。

public boolean isLeap(); // 报告year表示的年份是否为闰年。

注:(1) 闰年是指能被400整除、或者能被4整除但不能被100整除的年份。(2) 方法的实现可以使用各种类型的表达式,不要使用if等语句。

然后再定义一个应该程序起始类TestZy3测试该类:判断1900、1964、1990以及2000年是否为闰年,并输出判断结果。

源程序文件:zuoye4_1.java,类:Zy4_1。

请定义类Zy4_1,该类的软件接口如下:

class Zy4_1{

public static int method(int x);

public static void main(String[] args);

}

方法method计算如下函数的值:

2x - 1 (x < 0)

3x + 5 (0 <= x <3)

x + 1 (3 <= x <5)

5x - 3 (5 <= x <10)

7x +2 (x >= 10)

f(x) =


main方法完成对method方法的测试,需要测试的参数包括:-1、0、1、3、5、7、10。这些测试数据在程序运行时从键盘输入。

编程序

本题需要创建和定义的源程序文件及类如下:

源程序文件:zuoye4_2.java,类:Zy4_2。

有一个数列2、3、4、6、9、13、19、28…,其各数存在以下递推关系:

tn= tn-1 + tn-3, t1= 2, t2 = 3, t3 = 4

请定义类Zy4_2,该类的软件接口如下:

class Zy4_2{

public static int method1(int x);

public static int method2(int x);

public static void main(String[] args);

}

方法method1和method2分别用迭代和递归方法求上述数列的第n个数。main方法完成对上面两个方法的测试,需要测试的参数包括:1、2、3、4、10。

方法一:

编译代码:

import java.util.Scanner;

class Zy4_1 {

public static int method(int x){

int s;

if(x<0) {

s=2*x-1;}

else{

switch(x){

case0:

case1:

case2:

case3:s=3*x+5;break;

case4:

case5:s=x+1;break;

case6:

case7:

case8:

case9:

case10:s=5*x-3;break;

default:s=7*x+2;

}

}

returns;

}

public static void main(String[] args) {

Scannerscanner=new Scanner(System.in);

System.out.print("x=");

intx = scanner.nextInt();

System.out.println("x("+ x + ")=" + method(x));

}

}

方法二:

编译代码:

import java.util.Scanner;

class Zy4_1 {

public static int method(int x){

int s=0;

if(x<0) {

s=2*x-1;}

if(x>=0&&x<3) {

s=3*x+5;}

if(x>=3&&x<5) {

s=x+1;}

if(x>=5&&x<10) {

s=5*x-3;}

if(x>=10) {

s=7*x+2;}

returns;

}

public static void main(String[] args) {

Scannerscanner=new Scanner(System.in);

System.out.print("x=");

intx = scanner.nextInt();

System.out.println("x("+ x + ")=" + method(x));

}

}

编程序

本题需要创建和定义的源程序文件及类如下:

源程序文件:Point.java,类:Point。

定义一个表示屏幕坐标系上点的Point类。该类有两个int型、变量名分别为x和y的实例变量(访问修饰符为private),用以存储点的坐标值。该类的软件接口如下:

public class Point {

public final static int EAST = 1; // 类的有名常量,用以表示的点移动方向

public final static int SOUTH =2;

public final static int WEST = 3;

public final static int NORTH =4;

public void set(int x, int y); // 设置点的坐标值

public void move(int orientation); // 按指定的方向将当前点移动1个像素

public double distance(int x, int y); // 计算当前点与指定点之间的距离

public boolean equals(Point p); // 测试当前点与参数点p的坐标值是否相等

public int getX(); // 返回当前点的X坐标

public int getY(); // 返回当前点的Y坐标

public String toString(); // 以(x,y)格式返回当前点对象的字符串表示

}

然后在类中编写main方法进行测试。特别地,在实现Point类的move(int orientation)方法和main方法的相关测试代码时,如果涉及点的移动方向,要使用类中定义的EAST、SOUTH等有名常量,不要直接使用1、2等整数。

2.法一;

public classPoint {

private int x,y;

public final static int EAST = 1;

public final static int SOUTH =2;

public final static int WEST = 3;

public final static int NORTH =4;

public void set(int x, int y){

this.x=x;

this.y=y;

}

public void move(int orientation){

switch (orientation){

case EAST: x++;break;

case WEST: x--;break;

case NORTH: y++;break;

case SOUTH: y--;break;

}

}

public double distance(int x, inty){

returnMath.sqrt((this.x-x)*(this.x-x)+(this.y-y)*(this.y-y));

}

public boolean equals(Point p){

if(p.getX()==x&&p.getY()==y)

return true;

else return false;

}

public int getX(){

return x;

}

public int getY(){

return y;

}

public String toString(){

return"("+x+","+y+")";

}

public static void main(String args[]){

Point r1=new Point();

r1.set(10,15);

System.out.println("当前点的坐标:"+r1.toString());

r1.move(EAST);

System.out.println("当前点与指定点的距离:"+r1.distance(10,15));

Point r2=new Point();

r2.set(5,6);

System.out.println("当前点与参考点坐标值是否相同:"+r1.equals(r2));

System.out.println("当前点的坐标:"+r1.toString());

法二:public class Point {

private int x,y;

public final static int EAST = 1; // 类的有名常量,用以表示的点移动方向

public final static int SOUTH =2;

public final static int WEST = 3;

public final static int NORTH =4;

public void set(int x, int y){

this.x=x;

this.y=y;

}

// 设置点的坐标值

public void move(int orientation){

if(orientation==EAST)

x++;

if(orientation==SOUTH)

y--;

if(orientation==WEST)

x--;

if(orientation==NORTH)

y++;

}

// 按指定的方向将当前点移动1个像素

public double distance(int x, inty){

returnMath.sqrt((this.x-x)*(this.x-x)+(this.y-y)*(this.y-y));

}

// 计算当前点与指定点之间的距离

public boolean equals(Point p){

if (x==p.getX()&&y==p.getY())

return true;

else return false;

}

// 测试当前点与参数点p的坐标值是否相等

public int getX(){

return x;

}

// 返回当前点的X坐标

public int getY(){

return y;

}

// 返回当前点的Y坐标

public String toString(){

return"("+x+","+y+")";

}

// 以(x,y)格式返回当前点对象的字符串表示

public static void main (Stringargs[]) {

Point o=new Point();

o.set(10,15);

System.out.println(o.toString());

o.move(EAST);

Point p=new Point();

p.set(5,6);

System.out.println("distance= " + o.distance(10,15));

System.out.println(o.equals(p));

System.out.println(o.toString());

}

}

编程序

本题需要创建和定义的源程序文件及类如下:

源程序文件:zuoye8_1.java,类:Zy8_1。

在类Zy8_1中定义方法public static booleanisPalindrome(String str),方法的功能是判断参数字符串是否为“回文”。然后再在类中定义适当的main方法,以便对上述方法进行测试。

说明:当一个字符串顺读和倒读时都一样,则该串就是“回文”。如”level”、”12321”等都是“回文”。

class Zy8{

public static boolean isPalindrome(String str){

StringBuffer buf=new StringBuffer(str);

buf.reverse();

String s1=buf.toString();

if(s1.equals(str))return true;

return false;

}

public static void main(String args[]){

System.out.println("判断结果:"+isPalindrome("level"));

}

}

编程序

本题需要创建和定义的源程序文件及类如下:

源程序文件:zuoye9.java,类R_Circle、TestR_Circle。

实验7第2题通过组合Point类和Circle类定义了一个表示屏幕坐标系上圆区域的R_Circle类。现在请通过扩展Circle类定义一个具有相同软件接口的屏幕坐标系上圆区域类。该类包含一个private的、Point型的实例变量p,表示圆区域的圆心在屏幕坐标系上的位置。其软件接口如下:

class R_Circle extendsCircle {

public R_Circle(); // 构造方法,圆心位置(1, 1),圆半径为1

public R_Circle(Point p, Circle c); // 构造方法

public R_Circle(Circle c, Point p); // 构造方法

public R_Circle(int x, int y, int r ); // 构造方法,圆心位置(x, y),圆半径为r

public boolean equals(R_Circle rc); // 判断两个圆区域是否相等

public void move(int orientation); // 按指定的方向将当前圆区域移动1个像素

public Point getPoint(); // 返回当前圆区域的圆心位置

public int getRadius(); //返回当前圆区域的半径

public String toString(); // 以格式“圆区域(x, y, r)”返回当前圆区域的字符串表示

}

然后编写一个应用程序起始类TestR_Circle测试该类(两个类存放在同一个文件中)。

说明:Point类和Circle类在实验6里已经定义,分别存放在Point.java和zuoye6.java文件中。在做此题时,可以先编译这两个文件,产生Point.class和Circle.class文件。

class R_Circle extends Circle {

privatePoint p;

publicR_Circle(){ //构造方法,圆心位置(1, 1),圆半径为1

super(1);

p=newPoint(1,1);

}

publicR_Circle(Point p, Circle c){ //构造方法

super(c);

this.p=new Point(p);

}

publicR_Circle(Circle c, Point p){ //构造方法

this(p,c);

}

publicR_Circle(int x, int y, int r ){ //构造方法,圆心位置(x, y),圆半径为r

super(r);

p=newPoint(x,y);

}

publicboolean equals(R_Circle rc){ //判断两个圆区域是否相等

if(super.equals(rc)&rc.p.equals(this.p))returntrue;

elsereturn false;

}

publicvoid move(int orientation){ //按指定的方向将当前圆区域移动1个像素

p.move(orientation);

}

publicPoint getPoint(){ //返回当前圆区域的圆心位置

return p;

}

public int getRadius(){ // 返回当前圆区域的半径

return super.getRadius();

}

publicString toString(){ // 以格式“圆区域(x, y, r)”返回当前圆区域的字符串表示

return "圆区域("+p.getX()+","+p.getY()+","+getRadius()+")";

}

}

class TestR_Circle{

public static void main(String[] args){

R_Circle a=new R_Circle();

R_Circle b=new R_Circle(3,3,2);

a.move(1);

System.out.println("判断两个圆区域是否相等:"+a.equals(b));

System.out.println("当前圆区域的圆心位置:"+a.getPoint());

System.out.println("当前圆区域的半径:"+a.getRadius());

System.out.println("以格式“圆区域(x, y, r)”返回当前圆区域的字符串"+a.toString());

}

}

阅读(724) | 评论(0) | 转发(0) |
0

上一篇:C语言复习2

下一篇:JAVA重点编程题2

给主人留下些什么吧!~~