gpt4 book ai didi

用循环构造的东西上的 Java mutator 方法

转载 作者:行者123 更新时间:2023-11-29 06:08:46 26 4
gpt4 key购买 nike

所以我有一个用循环构建的类。在构造函数中,我有两个 while 循环,它们构成了圆圈的“网格”。它应该是上课用的围巾,但我称它为链甲,因为这听起来更酷。不管怎样,我们应该能够用不同的(客户端)类来改变围巾的颜色。我显然需要添加一个 mutator 方法来改变颜色。幸运的是,在 objectdraw 中有一个名为 setColor() 的修改器。它工作得很好,除了当我尝试将它添加到此类时它只会更改网格中的最后一个圆圈。我知道为什么会这样,但我不知道如何解决。我已经注释掉了我们在类里面使用的“典型”修改器。

编辑:很抱歉让大家感到困惑...这只是类(class),我有一个客户端调用 new ChainMail() 然后对其执行 .setColor() 但它只更改最后一个 framedoval 而不是所有他们中的。这就是问题所在

import objectdraw.*;
import java.awt.*;

public class ChainMail {

private FramedOval link;

public ChainMail(int rows,int links,
Location p,Color rgb,
DrawingCanvas c) {

double numRows = 0;

// create the number of rows specified
while (numRows < rows) {

double numLinks = 0;

// create the number of links specified
while (numLinks < links) {
link = new FramedOval(p,12,12,c);
link.setColor(rgb);

// update the position
p.translate(8,0);
numLinks++;
}

// move position back to front col and down one row
p.translate(-8*links,8);
numRows++;

}

}

public ChainMail(int rows,int links,Location p,DrawingCanvas c) {
this(rows,links,p,Color.BLACK,c);
}

/* this doesn't work, only changes last circle
* public void setColor(Color c) {
* link.setColor(c);
* }
*/

}

最佳答案

如果你将它移到类中(如注释代码所示),那么你从哪里调用这个函数?我认为这就是与众不同的原因。假设您正在执行以下操作:

  1. 删除“link.setColor(rgb);”从 while 循环中
  2. 取消注释 public void setColor(Color c) 函数
  3. 创建 ChainMail 实例(比如 myChainMail)
  4. 调用 myChainMail.setColor(c)

此场景将给出您所报告的结果,即只有最后一个圈出的颜色。有两种方法可以解决这个问题:

  1. 首先是你已经在做的事情
  2. 而不是“私有(private) FramedOval 链接”; create "private ArrayList linkList = new ArrayList; Now before while create link variable of type FramedOval. Then after you do link = new FramedOval(p,12,12,c); 在 while 循环中将其添加到上面创建的 ArrayList。 现在在类的 setColor 方法中迭代 arraylist 中的所有项目并为这些项目设置颜色

关于用循环构造的东西上的 Java mutator 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7748637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com