单个数组可在每个元素中存储多个变量

克里斯·坎贝尔

编辑:澄清一下,我的要求之一是使用单个数组。

我在将多个变量存储到数组中的单个元素时遇到麻烦。我们正在创建一个非常简单的程序来模仿Microsoft Paint。要求之一是将我绘制的每个元素存储到数组中,以便每次将窗口最小化然后重新显示时,“ paint”方法都会重新绘制图形。这是要求

我们假设数组的最大大小为20。每个元素应包含5个变量:

  • 字符形状(l代表直线,r代表矩形,c代表圆形)
  • 起始x值
  • 起始y值
  • 宽度(矩形)或结尾x(线)或半径(圆形)
  • 高度(矩形)或结束y(线)或半径(圆形)

这是我的数组类代码:

class storeDraws {
    final int MAXSIZE = 20;
    static int S[];
    static int n; //number of draws user makes
    static char shape;
    static double px, py, w, h;

    storeDraws () {
        S = new int [MAXSIZE];
        n = 0;
        shape = 'l';
        px = 0;
        py = 0;
        w = 0;
        h = 0;
    }
}

我已经阅读了一些可以将数组输入为的地方(使用mouseReleased(MouseEvent e)方法):

storeDraws[] input = new storeDraws{value, value, value, value, value};

但是我认为这与我尝试使用“绘制”方法重绘形状的方式不起作用。我以为我可以使用S [n] =(字符,双精度,双精度,双精度,双精度,双精度)的标准格式通过它,但是我得到警告,这是非法的。

编辑上午8:30,我已开始执行此部分。在我的课堂上,现在是我的代码。

class storeDraws {
    static char shape;
    static int px, py, w, h;

    storeDraws () {
        shape = 'l';
        px = 0;
        py = 0;
        w = 0;
        h = 0;
    }
}

然后,我在DrawPanel类中声明了这一点:

private storeDraws[] store = new storeDraws[20];
private int n = 0;

和DrawPanel的mouseReleased方法:

public void mouseReleased(MouseEvent e) {
    if (drawShape == "line") {
        store[n].shape = 'l';
        store[n].px = p1.x;
        store[n].py = p1.y;
        store[n].w = p3.x;
        store[n].h = p3.y;
        n++;
    }

和油漆:

public void paint(Graphics g) {
    for (int i = 0; i < n; i++) {
        if (store[i].shape == 'l')
            g.drawLine(store[n].px, store[n].py, store[n].w, store[n].h);

但是,如果我绘制6条线,它只会重画最后一行。

前卫13

我认为您需要分离一些所需的功能。您可以为每个元素都有一个类,然后将该类的实例存储在DrawingElement对象的数组中。

所以你会做这样的事情:

DrawingElement[] drawing = new DrawingElement[20];
DrawingElement circle = new DrawingElement('c', 10, 10, 10, 10);
DrawingElement rect = new DrawingElement('r', 20, 10, 10, 10);
drawing[0] = circle;
drawing[1] = rect;

注意:如果需要获取数组中对象的数量(n代码中的变量),则可能需要使用链表(具有size()方法)的某些实现,并在添加元素时进行一些检查以确保您添加的最大值不超过20。

LinkedList的示例:

LinkedList<DrawingElement> drawing = new LinkedList<DrawingElement>();
DrawingElement circle = new DrawingElement('c', 10, 10, 10, 10);
DrawingElement rect = new DrawingElement('r', 20, 10, 10, 10);
drawing.add(circle);
drawing.add(rect);
int n = drawing.size(); //will be 2

绘图元素类:

public class DrawingElement
{
    char shape;
    double px, py, w, h;

    public DrawingElement(char shape, double px, double py, double w, double h)
    {
         this.shape = shape;
         this.px = px;
         this.py = py;
         this.w = w;
         this.h = h;
    }

    //Add getters and setters (accessors and mutators) for class variables
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Java中将多个对象存储在单个数组元素中

如何从mongo管道中检索每个单个数组元素?

将数组中的每个元素拆分为多个数组

Swift:将多个类型存储在单个数组中

如何在单个数组中组合多个变量

从单个数组中创建多个 PHP 数组并将这些新数组存储到新的单个数组中

在数组变量中存储多个数据

比较单个数组中的每个索引

将字典存储在单个数组中

是否可以在单个循环中获取每个数据并存储在相应的数组中?

$unwind 嵌入文档中存在的多个数组,并将每个数组显示为单个文档作为 mongoDB 中的输出

在单个foreach中迭代多个数组

将数组中的每个数值存储到 PowerPoint 中 VBA 中的变量

将多个模型的属性存储到 laravel 中的单个数组

在Java中将多个电话号码存储在单个数组中

从方法返回数组并将其存储在单个变量和多个变量中

将数组拆分为多个数组并存储在不同的变量中

mongoDB更新单个数组元素中的多个字段(来自表单)

使用jQuery将多个列表元素的名称聚合到单个数组中

使用Vuejs在单个数组元素中包含多个字段

Azure表存储JSON返回每个条目一个数组而不是单个数组

将多个数组+变量合并为单个JSON对象

每个数组元素返回多个HTML代码段

循环遍历多个数组并保持每个元素的计数

访问JSON对象数组中的单个数组元素

如何添加两个不等数组的每个元素并将其存储在第三个数组中?

如何将fetch(PDO :: FETCH_ASSOC)中的单个值或整个数组存储在变量中?

在UITableView中使用多个部分进行Segue,每个部分包含从单个数组中筛选出的对象

从多个获取单个数组