2012-10-13 95 views
0

我最近开始编程。到目前为止,我已经学会了基本知识,现在是面向面向对象的时间,所以我有一些问题,比如构建基本程序来理解主体并链接到我将以实际方式使用它的方式。所以我正在Java中制作一个简单的三角形程序,到目前为止它已经计算了周长(后来会添加其他形状和其他参数),我打开了我想添加三角形存在的墙(因为边不能为负数)并且还希望允许用户输入。事情是我不知道在哪里放代码以及如何参考课程。线性(非OOP)的方式很简单,但是如何在OOP中完成,我是否需要通过方法创建另一个类或Triangle类?Java OOP三角形存在

我的代码:

public class Trissturis { 
    private int sideA, sideB, sideC; 
    private double perimeter; 

    public Trissturis(int a, int b, int c) { 
     sideA = a; 
     sideB = b; 
     sideC = c; 
    } 

    public double getPerimeter() { 
     return sideA + sideB + sideC; 
    } 
} 

public class TestTri { 
    public static void main(String[] args) { 

     Trissturis t1 = new Trissturis(10, 20, 30); 
     System.out.println("perimeter is " + t1.getPerimeter()); 

     Trissturis t2 = new Trissturis(-1, 20, 30); 

    } 
} 
+1

[异常处理(http://docs.oracle.com/javase/tutorial/essential/exceptions/) – cprogcr

+0

你声明的字段'perimeter'您不要使用任何地方。你可以删除它。 –

+0

我想使用用户输入 - 因此用户可以输出sideA,sideB,sideC,因为边不能是负数或0三角形不能存在。所以我想在代码中检查是否有负面的输入。事情是我不知道该把这条线放在哪里 – andris

回答

3

要验证你必须检查所有边的长度大于零的三角形,并且无副作用比其他两者之长。一种方法可以实现这一点:

public boolean isValid(){ 
    return (sideA>0)&&(sideB>0)&&(sideC>0)&&(sideA+sideB>sideC)&&(sideA+sideC>sideB)&&(sideC+sideB>sideA); 
} 

对于用户输入值,最好有独立的用户界面类。如果这将是一个桌面应用程序,则可以使用某些Swing类(例如,虽然有替代方法)。

+0

也许最好的办法是将它封装在一个布尔函数 – cprogcr

+0

谢谢你的建议;我编辑了包含方法“包装器”的响应 – Eduardo

+0

好的,谢谢。这似乎工作,但如何然后将isValid()方法放在TestTri类中的if语句中? – andris

1

您的代码检查三角形是否正确构建(使用非负值等)属于Triangle类。

用于输入用户输入的代码可以在您的Test的main()函数中放入一个小程序,但可以在单独的UI名称空间中放入较大的应用程序。

心连心

2
interface TriangleFactory { 

    Triangle create(); 

} 

class ConsoleTriangleFactory implements TriangleFactory { 
    @Override 
    Triangle create() { 
    // read perimeter from console here with some nice prompt 
    // check that every side is > 0, 
    // if it's not a number or less than 0 - then do some alert 
    } 
}