2014-11-01 113 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