我对这个方法从哪里开始感到困惑?

时间:2012-12-09 00:50:20

标签: java drjava

我的探索方法遇到问题() 我必须创建一个图片,其高度是高度的最大值,宽度是 存储图片宽度的总和。到目前为止应复制的相册中的图片被复制到新图片中,并通过调用其上的explore()方法显示该图片。 这就是我所拥有的:

public boolean addPicture( Picture thePicture, int where )
{
int index = nPictsInAlbum;
pictArray[index] = pictArray[index-1];

while( index > where )
{
pictArray[where] = thePicture;
nPictsInAlbum ++;
}
return true;
}

public void explore()
{    
int maxHeight = 0;  //max height for the picture
int value = 0;
int biggest = 0;

for(int i = 0; i < pictArray.length; i++)
{
nPictsInAlbum = pictArray[i];
if(value > maxHeight)
{
biggest = value;
maxHeight = i;
}
}

1 个答案:

答案 0 :(得分:0)

我假设变量最大是保持总宽度的变量。

你的代码出了点问题,你必须先解决这些问题

  1. 您正在多次为不同类型的变量重复使用nPictsInAlbum。你不应该这样做。我不是一个java程序员,但它至少在其他语言中是一种不好的做法,因为它会导致混乱。您可以在addPicture方法中使用该变量来跟踪最新索引。但是在explore方法中,您可以使用它临时存储您正在访问的单个图片。

  2. explore方法中,您不会访问图片对象的属性\字段。在不知道图片对象具有哪些属性\字段的情况下,我们无法完全纠正您的代码。

  3. 如果您解决了这两个问题,那么explore方法中的逻辑错误就是

    1. (假设变量biggest是总宽度,如果是,则应将其重命名为更具描述性)当您计算出当前的高度时,您只需设置总宽度您拥有的图片的高度比以前存储的图片大。无论如何循环每张图片,都需要始终设置总宽度。

    2. 设置图片的总宽度时,您将替换总数,而不是添加总数。在您的示例biggest = value中不会添加它。您希望biggest = biggest + value执行此操作


    3. 您希望确保在制作方法时花些时间。仔细思考它将要做什么,你需要什么变量,你将访问哪些其他变量,以及你将如何处理它们。例如,如果explore的点是确定最大高度和总宽度,您会这样想:

      1. 我需要一段可重复使用的代码来确定所有图片的最大高度。它还将获得所有图片的总宽度。
      2. 因此我需要两个变量:maxHeight和totalWidth。
      3. 从这段代码中我需要迭代一系列图片。
      4. 在那个循环中,我需要检查图片的高度是否大于maxHeight。如果是这样,我需要将maxHeight设置为图片的高度
      5. 要访问图片的高度,我需要使用(我不知道图片的对象结构是什么,所以我猜)picture.height属性。
      6. 无论图片的高度如何,我都需要将图片的宽度添加到运行总计中。所以我会使用totalWidth = totalWidth + picture.width
      7. 希望这有助于您清理代码并更好地工作。