我正在参加一个在线 Java 入门课程。在关于ArrayList
s 的课程中,有一个练习给我们一个对象,并要求调用第一个是纵向ArrayList
的对象。我们得到了一些代码开始:Picture
draw()
Picture
// BlueJ project: lesson7/gallery8
// Find and draw the first portrait in the gallery.
// Notice the pseudocode from the instructions has been started for you; your task is to complete it.
import java.util.ArrayList;
public class ListOfPictures
{
public static void main(String[] args)
{
ArrayList<Picture> gallery = new ArrayList<Picture>();
gallery.add(new Picture("degas1.jpg"));
gallery.add(new Picture("gaugin1.jpg"));
gallery.add(new Picture("monet1.jpg"));
gallery.add(new Picture("monet2.jpg"));
gallery.add(new Picture("renoir1.jpg"));
int i = 0;
boolean found = false;
while ()
{
}
if (found)
{
....draw();
}
}
}
对我来说,他们希望我们做什么似乎很清楚。不过,我认为最好return
从 for-each 循环中创建一个函数,而不是使用一个found
和一个计数器变量。这就是我想出的:
public static void main(String[] args)
{
// declare/initialize/populate gallery
Picture firstPortrait = findFirstPortrait(gallery);
if (firstPortrait != null)
firstPortrait.draw();
}
private Picture findFirstPortrait(ArrayList<Picture> gallery)
{
for (Picture pic : gallery)
if (pic.getHeight() > pic.getWidth()) // pic is in portrait
return pic;
return null; // there aren't any images in portrait
}
不过,他们似乎真的不喜欢它。当我提交我的代码时,我得到了这个:
ListOfPictures.java: Keep looking for matches while found is false
Score
0
哪种方法更好?一般来说,我应该避免使用这样的“标志”变量吗?
编辑:是的,它是自动分级的。实际上,我在其他练习中遇到了一个错误,说评分者不知道如何处理我的代码,我应该将其发布在论坛上(看起来有点像 Stack Overflow,只是似乎没有人知道如何处理使用它)。
我将在论坛上链接到这个问题。:)