2015-09-17 110 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