2015-09-17 108 views
0

我正在創建消費者和生產者曲線,每個曲線都是自己的類。消費者有一系列點,生產者有一個點數組列表。我需要創建一個創建「圖形」(consumerCurve和producerCurve)的方法。在這些方法中,它需要檢查無效參數(即沒有負數),實例化數組/列表,然後實例化這些點/將它們存儲在正確的槽中。以下是我對consumerCurve:如何繪製數組和曲線列表的曲線?

public class ConsumerCurve { 

private Point[] myConsumerCurve; 

public void Curve() 
{ 
    myConsumerCurve = new Point[10]; 

    for(int x=0; x<10; x++) 
    { 
     myConsumerCurve[x] = new Point(x,x); 
    } 
} 

public ConsumerCurve(int np, double m, double b, int dx) 
{ 
    //*1)check for invalid parameters 
    Point[] myConsumerCurve = new Point [np]; 

    if (np < 0) { 
      throw new IllegalArgumentException("'np' must not be negative"); 
     } 

    //2) Instantiate array using size n 
    for(int i=0; i<np; i++) 
    { 
     int x = i*dx; 
     double y = m*x+b; 
     myConsumerCurve[i] = new Point (x,y); 
    } 

    //3*)instantiate points store in correct slots 

} 

我的第二部分,但我真的不知道如何來檢查invaid PARAMATERS和右側插槽得到點。另外,它會是一樣的數組列表?這可能是因爲我已經看過這種代碼太久而錯過了。

+0

您已經在檢查'np <0',只需以相同的方式檢查其他參數即可。如果論證無效,會發生什麼? 'np =(Integer)null;'不起作用 - 你不能將'null'賦值給一個原始類型'int'。在這種情況下,你應該拋出'IllegalArgumentException'。將這些點存儲在正確的插槽中意味着什麼?你已經創建了數組'myCurve'及其所有元素,也許你希望將它作爲實例字段而不是局部變量? – Cinnam

+0

目前在插槽中沒有任何東西,因爲在另一個類中,點正在創建,然後存儲在插槽中以創建曲線。本質上,我需要說的是,積分按照順序存儲(so(0,0)(1,1)等)在插槽 – retrogirl19

+0

插槽究竟是什麼以及它們在哪裏聲明?您已經在此方法中創建了點,並且它們目前按'x'排序。你只是想把它們存儲在別處嗎? – Cinnam

回答

0

一對夫婦對代碼的註釋:

Point[] myCurve = new Point [np]; // if np is negative here, you will get an exception 
if(np< 0) { 
    np= -1; 
} 

在這裏,你必須檢查你使用它new Point[np]np,否則你將得到一個異常的負np情況。將np設置爲-1不能解決問題。您應該將其設置爲0,或優選地拋出異常指示該參數是不能接受的:如果需要的話

if (np < 0) { 
    throw new IllegalArgumentException("'np' must not be negative"); 
} 

類似地,對於其他的參數。

如果Pointjava.awt.Point,那麼它的構造是Point(int, int) - 你將不得不投的doubleintnew Point(x, (int) y)。如果Point是你自己的類,它在構造函數中接受double,那就沒問題。

最後的,而不是點存儲到本地變量myCurve,你爲什麼不直接存儲他們myConsumerCurve如您在curve()方法呢?

myConsumerCurve = new Point [np]; 

for(int i=0; i<np; i++) { 
    int x = i*dx; 
    double y = m*x+b; 
    myConsumerCurve[i] = new Point (x, y); // or 'new Point (x, (int) y)' if it's java.awt.Point 
} 

在一個側面說明,它是方法都以較低的情況下(即curve(),不Curve())的約定。

+0

我剛剛編輯了我的代碼,我不能讓構造函數成爲void,所以這會改變一些東西,不知道它應該是什麼。另外,我需要創建一個for循環來查看數組的內容,然後如果是負數,則說明不能有負數 – retrogirl19

+0

構造函數沒有返回類型,並且它們必須與該類名稱相同。如果你想'consumerCurve()'是一個構造函數,你可以聲明它爲'public ConsumerCurve(...)'。 – Cinnam

+0

我剛纔意識到,我說了。如何創建一個循環遍歷數組,然後查找一個負數,如果它找到一個然後說你不能有一個負數 – retrogirl19