我正在尝试重新缩放图像数组,以便它们都具有相同的宽度和高度。我无法返回阵列。任何帮助都会很棒。
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;
}
答案 0 :(得分: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;
}
答案 1 :(得分:0)
名为Pictures
的{{1}}数组只存在于声明它的块的范围内。可以引用target
数组的范围由最内层for循环的开始和结束括号标记。
为了能够在你有return语句的行引用target
,你需要在for循环之外声明它。
至于其他代码,正如其他人所指出的,目前尚不清楚发生了什么。
target
参数未使用:如果您不使用它,请将其删除。
slides
参数命名不佳:重命名它以指示其内容。
执行这些步骤将使我们更容易为您提供进一步的帮助。