Ниже приведен метод, который я хочу использовать для расчета и возврата значения. Уравнение: L = T + R * p - b, где L, R, p и b будут иметь индекс (0-5). R - матрица 3x3, которая хранится/генерируется в другом классе, p и b - массивы из 6 наборов координат (x, y, z). При запуске программы L должно иметь 6 общих значений, и я решил сохранить их в массиве.Java: арифметика с массивами (умножение, сложение, вычитание)
Первой ошибкой, которую я получил, было то, что у меня не было rotationMultiply
или петель for
. Вместо этого у меня было rotation*platformCoords
. Итак, теперь, когда я избавился от этой ошибки, я получил новую ошибку «Синтаксическая ошибка на токене« * », недействительный AssignmentOperator» для строки rotation[i][j]*platformCoords[i]
и еще одна ошибка. Оператор - не определен для типов аргументов double, double [], для строки tLength + rotationMultiply - baseCoords;
.
Я уверен, что будет больше ошибок после того, как я получу тех, о которых позаботились, поэтому, если вы можете предвидеть их и дать мне хедз-ап, где я могу сделать еще несколько уроков, я бы это оценил.
Это одна часть программы, которую я пытаюсь написать, что поможет контролировать платформу стюарда.
public class LiCalc {
double length[];
public double legLength(double tLength, double[][] rotation, double[] platformCoords, double[] baseCoords){
double rotationMultiply;
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
rotation[i][j]*platformCoords[i];
return rotationMultiply;
}
}
length = tLength + rotationMultiply - baseCoords;
return length[];
}
}
В основном (а) Вы не можете сделать арифметическую операцию, не назначая его на что-то * *. Вот почему возникает первая ошибка. (b) Вы должны сделать арифметику по скалярным значениям, поэтому вы не можете вычесть вектор из двойника, а 'baseCoords' - это в основном вектор (массив). (c) Что такое 'length []'? И (d) как вы ожидаете присвоить вектор арифметической (скалярной!)? – RealSkeptic
Итак, я определенно думал, что я «назначил» операцию 'rotation [] [] * platformCoords []', но все, что вы говорите, заставляет меня думать, что мне нужно пересмотреть математику, потому что я думаю, что 'tLength' также должно быть (я думал, что это будет постоянное скалярное значение, но перечитывать эту математику заставляет меня думать иначе). 'length []' - это массив длин, каждый из которых должен иметь 6 ног на платформе. В конечном счете, другая часть программы повторяется через 'length []' выполняет некоторые вычисления и выводит угол, который должен вращать определенный сервопривод. –
Вам также нужно просмотреть свою Java. 'length []' является незаконным, если 'length' - это имя переменной. Пустое множество скобок является допустимым только после имени типа. И назначение выполняется с помощью оператора '=' или любого из его коротких форматов ('+ =', '/ =' и т. Д.). Вы должны присваивать * result * арифметической операции скалярной переменной. – RealSkeptic