オンラインの Java 入門コースを受講しています。のレッスンでは、オブジェクトの が与えられ、縦向きの最初のものを呼び出すように求めArrayList
られる演習があります。最初にいくつかのコードが与えられます。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
これを行うより良い方法はどれですか?一般に、そのような「フラグ」変数の使用は避けるべきですか?
編集:はい、自動的に採点されます。私は実際に、採点者が私のコードを処理する方法を知らなかったので、フォーラムに投稿する必要があるというエラーを他の演習で受け取りました (これは疑わしいことにスタック オーバーフローのように見えますが、誰もその方法を知らないようです)。それを使用してください)。
フォーラムでこの質問にリンクします。:)