-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 循环的左括号和右括号标记。

为了能够target在您拥有 return 语句的行处引用,您需要在两个 for 循环之外声明它。

至于代码的其余部分,正如其他人所指出的那样,目前尚不清楚发生了什么。

slides参数未使用:如果您不使用它,请将其删除。

args参数命名不当:重命名它以指示其内容。

执行这些步骤将使我们更容易为您提供进一步的帮助。

于 2013-02-17T20:59:13.290 回答