2014-11-01 114 views
0

***我试过搜索,但我不明白会发生什么。抱歉。(Java)在构造函数中调用方法?

我正在为学校服务器/客户端项目工作。我在智慧的结尾,我即将放弃。我没有课堂笔记,所以我需要一些帮助。 首先,我会发布给我的指示,然后是我现在的代码,然后是我的问题。

SERVER方向:

  • 三角类必须具有以下实例变量:side_a,side_b,side_c。创建一个静态变量来跟踪创建的三角形对象的数量。还要创建一个静态变量来保存创建的所有Triangle对象的周界总数。

  • Triangle类的三个参数构造函数应该将三重输入值分配给对象的实例变量。如果不是有效的三角形,则将所有边设置为1.创建一个名为isValid()的单独私有方法。为了表示一个有效的三角形,三角形的任何两边的总和必须大于第三边的总和。没有一方可能是0或负面的。构造函数还应该为count添加1,并调用一个方法来计算,然后将该对象的周长添加到累加器。

  • 三角类必须具有下列方法如上指出:

  • 公共布尔is_right()公共布尔is_isoc()
  • 公共布尔is_equil()公共布尔is_scal()
  • 公共字符串toString() - 返回三角形三边的值

  • 您还应该向称为calc_perim的Triangle类添加一个方法。此方法将使用Triangle对象的边来计算该对象的边界。

  • addTotalPerim。此方法将调用calc_perim并将该对象的外围添加到累加器。
  • reduceTotalPerim。该方法应该从累加器中减去该对象的周长。

服务器代码:

public class Triangle { 
private int side_a, side_b, side_c; 
private static int count; 
**//PROBLEM 1: Java tells me 'perim' is not used.** 
private static int perim; 
private boolean valid; 




public Triangle(int s1, int s2, int s3) 
{ 

    side_a = s1; side_b = s2; side_c = s3; 

    **//PROBLEM 2: Java tells me 'v' is not used.** 

    boolean v = isValid(); 

    if (v = false) 
    {side_a = 1; side_b = 1; side_c = 1;} 



    Triangle.count++; 
    calc_perim(s1,s2,s3); 
    addTotalPerim(); 
    reduceTotalPerim(); 



    } 

    private int calc_perim()  
    { 
    int perimeterCalc = side_a + side_b + side_c; 


    return perimeterCalc; 
    } 

    private void addTotalPerim() 
    { 


    Triangle.perim += calc_perim(); 

    } 

    private void reduceTotalPerim() 
    { 
    Triangle.perim -= calc_perim(); 

    } 

    private boolean isValid() 
    { 

    boolean valid1;  

    if (side_a < 1) 
     { valid1 = false;} 
    else if (side_b < 1) 
     { valid1 = false;} 
    else if (side_c < 1) 
     { valid1 = false;} 
    else if ((side_a + side_b) < side_c || (side_a + side_b) == side_c) 
     { valid1 = false;} 
    else 
     { valid1 = true;} 

    return valid1; 

    } 

    public boolean is_right() 
    { 
    boolean right; 
    if (((side_a * side_a) + (side_b * side_b)) == (side_c * side_c)) 
     right = true; 
    else 
     right = false; 

    return right; 
    } 

    public boolean is_isoc() 
    { 
    boolean isoc; 

    if (side_a == side_b) 
     isoc = true; 
    else if (side_a == side_c) 
     isoc = true; 
    else if (side_b == side_c) 
     isoc = true; 
    else 
     isoc = false; 

    return isoc; 

    } 

    public boolean is_equil() 
    { 
    boolean equil; 

    if (side_a == side_b && side_a == side_c) 
     equil = true; 
    else 
     equil = false; 

    return equil; 

    } 

    public boolean is_scal() 
    { 
    boolean scal; 

    if (side_a == side_b || side_a == side_c || side_b == side_c) 
     scal = false; 
    else 
     scal = true; 

    return scal; 
    } 

    public String toString() 

    { 
    return "Side 1: " + side_a + " Side 2: " + side_b + " Side 3: " + side_c; 

    } 

    } 

对不起格式化,但是这个网站有格式化代码,除非我误解的东西...

服务器问题的一个可怕的方式:

什么是正确的方法加/减e通过方法calc_perim获得的周界变量perim?方向说在构造函数中调用calc_perim方法,但我不知道如何,所以我只是让它自己进行计算。

在构造函数中,在调用方法isValid()之后,为什么我通过Java告诉变量'v'未被使用?我是否错误地调用了isValid()? >>>>>如何在构造函数中调用方法?< < < < <

除此之外重大问题,服务器类工作正常。

回答

0

建议:

  1. 在三角类,初始化静态变量。

    private static int count = 0; private static int perim = 0;

  2. 在三角构造,变更,

    如果(V =假)

if (v == false) 
  • 变化calc_perim为:

    private void addTotalPerim() perim + = calc_perim(); } private void reduceTotalPerim() perim - = calc_perim(); }

  • 为什么你在addTotalPerim()之后调用reduceTotalPerim(),没有得到这个清除。

  • 的isValid函数应该检查所有组合像A + B> C,B + C> A,C + A> B,如果任何一个发生故障,应为无效

  • +0

    4.我试图在构造函数中调用这两个函数,我只是猜测,因为我不确定是否正确调用了它们。感谢3和5的帮助,尽管我会尽快回复我的项目。 – magnum482 2014-11-01 19:19:18

    +0

    @ magnum482,好的,你也可以接受答案 – 2014-11-01 19:20:33

    +0

    是的,如果一切正常,我会接受你的,因为你也帮助过其他方法。 – magnum482 2014-11-01 19:26:48

    0

    来自Java编译器的“未使用”消息在技术上是一个警告,而不是错误,所以如果你真的想要的话,即使消息仍然有效,你仍然可以运行你的程序。但是你的直觉是正确的 - 忽略这些信息是一个坏主意。

    在这种情况下,您的代码有一个严重的问题。你打电话给v = false,这意味着你指定的值为falsev。将其更改为v == false。通过使用==,你正在做一个比较,这是你真正想要的。

    +0

    谢谢,我的印象==仅在比较非布尔变量时使用。当我回到我的项目时,我会改变它,看看它是否修复了isValid()的问题。 – magnum482 2014-11-01 19:13:56

    +0

    isValid有更多的问题,看到我的ans – 2014-11-01 19:21:29

    +0

    看到,感谢指出,我只是没有正确阅读方向。 – magnum482 2014-11-01 19:26:24