当前位置: 代码迷 >> Java相关 >> java小问题
  详细解决方案

java小问题

热度:391   发布时间:2007-10-16 16:38:51.0
java小问题

三.编程题
1.编写一个完整的Java 程序。包含接口ShapeArea,类Circle、Rectangle、Test,具体要求如下:
⑴接口ShapeArea:
①接口方法
double getArea():求一个形状的面积
double getPerimeter ():求一个形状的周长
⑵类Rectangle:
实现ShapeArea接口,并有以下属性和方法:
①属性
width: double型,表示长方形的宽度
height:double型,表示长方形的长度
②方法
Rectangle(double w, double h):构造函数
toString():输出矩形的描述信息,如“width=1.0,height=2.0,perimeter=6.0,area=2.0”
⑶Test类作为主类要完成测试功能
① 生成Rectangle对象
② 调用对象的toString方法,输出对象的描述信息

下面是我写的答案
interface ShapeArea //接口
{
double getArea();
double getPerimeter();
}

class Rectangle implements ShapeArea //类
{
double width,height;
Rectangle(double w,double h)
{ width=w;
height=h;
}
double getArea()
{ double area;
area=width*height;
return area;
}
double getPerimeter()
{ double perimeter;
perimeter=2*width*height;
return perimeter;
}
void toString()
{ System.out.println("width="+width+","+"height="+height+","+"/n"
+"perimeter="+getPerimeter()+","+"area="+getArea());
}
}

class Test
{
public static void main(String args[])
{
Rectangle test=new Rectangle(4,6);
test.toString();
}
}

但是编译是提示
F:\>javac Test.java
Test.java:19: Rectangle 中的 getPerimeter() 无法实现 ShapeArea 中的 getPerimeter
();正在尝试指定更低的访问权限;为 public
double getPerimeter()
^
Test.java:14: Rectangle 中的 getArea() 无法实现 ShapeArea 中的 getArea();正在尝
试指定更低的访问权限;为 public
double getArea()
^
Test.java:24: Rectangle 中的 toString() 无法覆盖 java.lang.Object 中的 toString(
);正在尝试指定更低的访问权限;为 public
void toString()
^
3 错误

谁能help me?先谢谢先

搜索更多相关的解决方案: java  

----------------解决方案--------------------------------------------------------
你在那几个方法前面加上public就行了,但是toString()的返回值应该是String而不是void
----------------解决方案--------------------------------------------------------
2楼说得对!!!
----------------解决方案--------------------------------------------------------
先谢谢先
不过现在问题是
F:\>javac Test.java
Test.java:27: 缺少返回语句
}
^
1 错误

我都找不到哪里缺了
哎真是
----------------解决方案--------------------------------------------------------

你把toString方法的返回值改为了String,所以在这个方法里面要加一句return啊


----------------解决方案--------------------------------------------------------
我真是粗心啊
得换一款编译器了
----------------解决方案--------------------------------------------------------
......
----------------解决方案--------------------------------------------------------
还要值得注意的是,题目要求是求周长! 所以:perimeter=2*(width+height);

----------------解决方案--------------------------------------------------------
接口是abstract类型的,接口里的方法默认是abstract的,实现时应声明方法的访问权限
----------------解决方案--------------------------------------------------------
interface ShapeArea{
double getArea();
double getPerimeter();
}

class Rectangle implements ShapeArea{
private double width,height;

Rectangle(double w,double h){
width=w;
height=h;
}

public double getArea(){
return width*height;
}

public double getPerimeter(){
return 2*(width+height);
}

public String toString(){
return "width="+width+","+"height="+height+","+"area="+getArea()+","+"perimeter="+getPerimeter();
}
}

public class Problem1{
public static void main(String[] args){
Rectangle rec=new Rectangle(2.5,3.2);
System.out.println(rec.toString());
}
}
----------------解决方案--------------------------------------------------------
  相关解决方案