-1

すべての画像の幅と高さが同じになるように、画像の配列を再スケーリングしようとしています。配列を返すのに問題があります。どんな助けでも素晴らしいでしょう。

  public static Picture[] resize(Picture[] slides, String[] args) {


    int w = 298;
    int h = 298;

    Picture [] source =  new Picture [Integer.parseInt(args[0])];

    for ( int ti = 0; ti < w; ti++){
        for (int tj = 0; tj < h; tj++){
            Picture [] target = new Picture[ti+1];
            int si = tj * source[ti].width()/w;
            int sj = tj * source[tj].height()/h;
            target[ti].set(ti, tj, source[0].get(si, sj));
        }
    }
    return target;   
}
4

2 に答える 2

3

あなたの質問は少し不明確で、ソース コードはわかりにくいです。渡された配列を編集するだけでよいようです。これを変更して、入力配列をコピーして新しい配列を作成すると、System.arraycopy()これが達成されます。

私はあなたが必要だと思うものに答えようとしましたが、Picture クラスの API を知りません。私が使用set(...)した API 呼び出しの代わりに、例のように使用できます。

public static Picture[] resize(Picture[] slides, String[] args) {
    int w = 298;
    int h = 298;

    for(Picture i : slides) {
        i.setHeight(h);
        i.setWidth(w);
    }
    return slides;   
}
于 2013-02-17T20:43:06.553 に答える
0

Pictures呼び出された の配列はtarget、それが宣言されたブロックのスコープ内にのみ存在します。配列を参照できる範囲targetは、最も内側の for ループの開き括弧と閉じ括弧で示されます。

return ステートメントがある行で参照できるようにするにはtarget、両方の for ループの外で宣言する必要があります。

他の人が指摘したように、コードの残りの部分については、何が起こっているのか明確ではありません。

パラメータは未使用です:slides使用していない場合は削除してください。

argsパラメータの名前が不適切です。その内容を示す名前に変更してください。

これらの手順を実行すると、さらに簡単にサポートできるようになります。

于 2013-02-17T20:59:13.290 に答える