刚刚学java,遇到这样一个问题:不同图形的周长计算。我是这样写的。一个图形接口,一个输出类,三角形继承输出类实现接口,矩形同上。现在的问题是,要将输出的结果输出到文件中,就像日志那种。我的是只能记录最后一次的结果。部分源代码如下:
interface Shape //定义一个图形接口
{
double GetP();
}
class Print // 定义一个输出图形周长的类
{
double Perimeter=0;
void PrintP(double P) throws IOException
{
File f=new File("D:\\g.txt");
FileWriter fw = new FileWriter (f);
fw.write("该图形的周长为:"+P1+" ");
fw.close();
System.out.println("该图形的周长为:"+P1+"\n");
}
}
class Rectangle extends Print implements Shape//子类矩形Rectangle继承父类Print实现接口Shape
{
double Height,Width; //长宽
Rectangle(double m,double n)
{
Height=m;Width=n;
System.out.println("矩形的高是:"+Height+",宽是:"+Width);
}
public double GetP() //计算周长
{
Perimeter=(Height+Width)*2;
return Perimeter;
}
}。
主程序中用switch的。
interface Shape //定义一个图形接口
{
double GetP();
}
class Print // 定义一个输出图形周长的类
{
double Perimeter=0;
void PrintP(double P) throws IOException
{
File f=new File("D:\\g.txt");
FileWriter fw = new FileWriter (f);
fw.write("该图形的周长为:"+P1+" ");
fw.close();
System.out.println("该图形的周长为:"+P1+"\n");
}
}
class Rectangle extends Print implements Shape//子类矩形Rectangle继承父类Print实现接口Shape
{
double Height,Width; //长宽
Rectangle(double m,double n)
{
Height=m;Width=n;
System.out.println("矩形的高是:"+Height+",宽是:"+Width);
}
public double GetP() //计算周长
{
Perimeter=(Height+Width)*2;
return Perimeter;
}
}。
主程序中用switch的。
double perimeter();
}class Rectangle implements Shape{
final double width;
final double height; public Rectangle(double width,double height){
this.width = width;
this.height = height;
} public double perimeter(){
return (width + height) * 2;
}
}class Print // 定义一个输出图形周长的类
{
private File f; public Print(File file){
this.f = file;
} void print(Shape s) throws IOException {
FileWriter fw = new FileWriter (f);
fw.write(s.getClass().getName() + " 周长为:" + s.perimeter());
fw.close();
}
}
在给出 File 对象的情况下构造一个 FileWriter 对象。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。你应该用这个构造方法。
FileWriter fw = new FileWriter (f,true);你的这个结构有点奇怪。我总觉得,图形应该是抽象类,输出功能作为一个接口才妥当的。