public static void Convertation(float[][] convertFrom, short[][] contertTo)
{
for (int i = 0; i < convertFrom.Length; i++)
for (int j = 0; i < convertFrom[0].Length; j++)
contertTo[i][j] = (short)(convertFrom[i][j] * (32767f));
}
Влад
0 уровень
Какая ошибка допущена в сценарии?
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
17 марта 2022, 07:57
Понятия не имею, что за задание, но здесьявно должно быть convertFrom[i].length, потому что вложенные массивы могут быть разной длины. Почему вообще length с большой буквы? Java - регистрозависимый язык.
0
Влад
17 марта 2022, 09:26
Добрый день! Такое дали задание, найти ошибку. Разместил задание в точности как прислали.
0
hidden #598481
17 марта 2022, 11:47
Ну я повторюсь, что без знания того, что должен делать этот код, нельзя найти ошибки в логике.
Из того, что я вижу:
- Length с большой буквы - ошибка, у массивов есть поле length, а не Length;
- i < convertFrom[0] - две ошибки, условие должно быть по переменной j и сравнивать надо с длиной i-того массива: j < convertFrom[i]
- Convertation - название метода с заглавной буквы не ошибка, но противоречит конвенции. Методы обычно называют действием (глаголом), а не существительным: convert();
- contertTo - опечатка, convertTo.
С точки зрения логики однозначно сказать не могу. Могу только предположить, что в массиве convertFrom лежат числа в диапазоне [-1; 1] или [0; 1]. Только в этом случае умножение на 32767f будет иметь какой-то смысл: полученное от умножения число будет лежать в диапазоне от Short.MIN_VALUE до Short.MAX_VALUE (либо от 0 до Short.MAX_VALUE), и его доля от Short.MAX_VALUE будет равна соответствующему значению из массива convertFrom.
Ещё было бы логично добавить какую-нибудь проверку на то, что массивы имеют соответствующие размеры: если convertFrom или какой-то из его одномерных массивов больше, чем соответствующий массив convertTo, то произойдёт выход за пределы массива.
0
hidden #598481
17 марта 2022, 11:47
Вот исправленный метод с учётом всего, что я предложил выше:
0