Class 处理按钮类
行动如下: 重写第6课的编程练习3 创建一个名为Button的类来替换数组。 a) 创建类并定义 保存有关位置、尺寸和尺寸的信息 颜色此外,还应创建一个类变量, 其中包含特定按钮的标题。 使用构造函数设置 类变量 所以基本上,我必须把以前做的一个练习转换成一个类。 这是我如何在您需要时进行上一个练习的: 所以我试着把它转换成类,但显然它给了我一个错误,我不知道如何修复它。 我的老师还说,我不必将它作为数组保存,而是可以生成许多变量,而不是数组中的数据 该语言正在处理,并给出错误代码NullPointerExceptionClass 处理按钮类,class,nullpointerexception,processing,Class,Nullpointerexception,Processing,行动如下: 重写第6课的编程练习3 创建一个名为Button的类来替换数组。 a) 创建类并定义 保存有关位置、尺寸和尺寸的信息 颜色此外,还应创建一个类变量, 其中包含特定按钮的标题。 使用构造函数设置 类变量 所以基本上,我必须把以前做的一个练习转换成一个类。 这是我如何在您需要时进行上一个练习的: 所以我试着把它转换成类,但显然它给了我一个错误,我不知道如何修复它。 我的老师还说,我不必将它作为数组保存,而是可以生成许多变量,而不是数组中的数据 该语言正在处理,并给出错误代码NullPoi
class Button
{
int[] nums;
Button(int n1, int n2, int n3, int n4)
{
nums[0] = n1;
nums[1] = n2;
nums[2] = n3;
nums[3] = n4;
}
void display()
{
fill(255, 0, 0);
rect(nums[0], nums[1], nums[2], nums[3]);
}
};
void setup()
{
size(800, 800);
Button butt = new Button(75, 250, 200, 200);
butt.display();
}
您只声明了
nums
,但没有初始化它。
这会导致一个NullPointerException
:在构造函数中,您正在访问nums[0],但nums还没有长度。试试这个:
class Button
{
//remember to initialize/allocate the array
int[] nums = new int[4];
Button(int n1, int n2, int n3, int n4)
{
nums[0] = n1;
nums[1] = n2;
nums[2] = n3;
nums[3] = n4;
}
void display()
{
fill(255, 0, 0);
rect(nums[0], nums[1], nums[2], nums[3]);
}
};
void setup()
{
size(800, 800);
Button butt = new Button(75, 250, 200, 200);
butt.display();
}
在将来,始终确保您尝试访问(数组/对象)属性的变量首先被初始化/分配(否则您将再次得到NullPointerException
,这一点都不好玩)
正如@v.k.so很好地指出的,最好是有可读的代码并删除一些冗余。
在将按钮的x、y、宽度和高度存储在数组中之前。这就是阵列所能做的:存储数据,就这样!但是,您的类不仅可以存储与单个易读属性相同的数据,还可以domore:functions!(例如display())
因此,更具可读性的版本:
class Button
{
//remember to initialize/allocate the array
int x,y,width,height;
Button(int x,int y,int width,int height)
{
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
void display()
{
fill(255, 0, 0);
rect(x,y,width,height);//why don't we use this.here or everywhere ?
}
};
void setup()
{
size(800, 800);
Button butt = new Button(75, 250, 200, 200);
butt.display();
}
是的,读起来比较容易,但是你可能会问,这是怎么回事?
好的,它是一个关键字,允许您访问对象的实例(将来您选择实例化时可能会访问该实例),从而访问对象的属性(变量的类版本)和方法(函数的类版本)。关于Java中的OOP,有很多很好的东西需要学习,但是您可以通过一种漂亮的可视化处理方法一步一步地学习。
如果您还没有,请查看
祝您在处理过程中学习OOP好运 错误信息是什么?是的。。。但是类本身已经“保存”了所有数据。因此,您可以替换具有完整名称的变量数组,使代码更可读,例如
intx,y,w,h
和rect(x,y,w,h)代码>。它将以同样的方式工作,但更具可读性。