Манипулирование массивом Java
У меня есть функция с именем resize, которая принимает исходный массив и изменяет размеры до новых значений ширины и высоты. Метод, который я использую, я думаю, неэффективен. Я слышал, есть лучший способ сделать это. Во всяком случае, код ниже работает, когда масштаб является int. Тем не менее, есть вторая функция с именем half, где она использует resize, чтобы уменьшить изображение пополам. Поэтому я сделал scale двойным, и использовал typecast, чтобы преобразовать его обратно в int. Этот метод не работает, и я не знаю, в чем заключается ошибка (учитель использует свои собственные оценки и тестирует эти функции, а не передает их). Можете ли вы обнаружить ошибку, или есть более эффективный способ сделать функцию изменения размера?
public static int[][] resize(int[][] source, int newWidth, int newHeight) {
int[][] newImage=new int[newWidth][newHeight];
double scale=newWidth/(source.length);
for(int i=0;i<newWidth/scale;i++)
for(int j=0;j<newHeight/scale;j++)
for (int s1=0;s1<scale;s1++)
for (int s2=0;s2<scale;s2++)
newImage[(int)(i*scale+s1)][(int)(j*scale+s2)] =source[i][j];
return newImage;
}
/**
* Half the size of the image. This method should be just one line! Just
* delegate the work to resize()!
*/
public static int[][] half(int[][] source) {
int[][] newImage=new int[source.length/2][source[0].length/2];
newImage=resize(source,source.length/2,source[0].length/2);
return newImage;
}