-4

我的 explore 方法有问题()我必须创建一个高度是高度最大值的图片,宽度是存储图片宽度的总和。相册中的图片应该被复制到目前为止被复制进入一张新图片,并通过调用其上的 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;
}
}
4

1 回答 1

0

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

你的代码做错了一些事情,你必须先修复这些

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

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

如果您解决了这两个问题,那么您在该explore方法中遇到的逻辑错误是

  1. (假设变量biggest是总宽度,如果是这样,您应该将其重命名为更具描述性)当您发现当前图片的高度大于之前存储的高度时,您才设置总宽度图片。无论如何,当您循环每张图片时,您都需要设置总宽度。

  2. 当您设置图片的总宽度时,您是在替换总宽度,而不是添加它。在您的示例biggest = value中不会添加它。你会想biggest = biggest + value这样做


您要确保在制定方法时花点时间。巧妙地考虑它要做什么,你需要什么变量,你将访问哪些其他变量,以及你将如何处理它们。例如,如果explore要确定最大高度和总宽度,您会这样想:

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

希望这可以帮助您清理代码并更好地工作。

于 2012-12-09T01:08:52.627 回答