может кто-нибудь помочь мне изменить этот код, я попытался сделать измерение Vectorarray гибким, чтобы пользователь мог определять размер, а также как в каждом векторе нужно сохранить много чисел.
Я создал здесь массив класса и пока не нашел ни одного примера о преобразование массива класса в double.
Я пытаюсь, но в результате этот массив нельзя преобразовать в двойной.
вот мой код:
первая страница:
package menu;
public class Vector3d {
private final float x;
private final float y;
private final float z;
Vector3d(float x, float y, float z) {
this.x = x;
this.y = y;
this.z = z;
}
public void Vectorprint() {
System.out.println("(" + x + "," + y + "," + z + ")");
}
/**
*
* @param V1
* @param V2
*/
public void addition(Vector3d V1, Vector3d V2) {
float value1 = V1.x + V2.x;
float value2 = V1.y + V2.y;
float value3 = V1.z + V2.z;
System.out.println("The Vector after addition (" + value1 + "," + value2 + "," + value3 + ")");
}
public void Difference(Vector3d V1, Vector3d V2) {
float value1 = V1.x - V2.x;
float value2 = V1.y - V2.y;
float value3 = V1.z - V2.z;
System.out.println("The Vector after subtraction (" + value1 + "," + value2 + "," + value3 + ")");
}
public void dotProduct(Vector3d V1, Vector3d V2) {
float value1 = V1.x * V2.x;
float value2 = V1.y * V2.y;
float value3 = V1.z * V2.z;
float sum = value1 + value2 + value3;
System.out.println("The scalarproduct is : (" + value1 + "," + value2 + "," + value3 + ") the complete Value of Scalarproduct : " + sum);
}
public float multiplcation(Vector3d V, int number) {
float value1 = V.x * number;
float value2 = V.y * number;
float value3 = V.z * number;
return value1 + value2 + value3;
}
public void unitVector(Vector3d v ){
double longVector = Math.sqrt((v.x*v.x)+(v.y*v.y)+(v.z*v.z));
double value1=v.x/longVector;
double value2=v.y/longVector;
double value3=v.z/longVector;
System.out.println("the lang of this vector : " +longVector);
System.out.println("The unitvector is : ("+ value1+","+value2+","+value3+")");
}
}
вторая страница:
package menu;
import java.util.Scanner;
public class Menu {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Vector3d v1, v2, v3;
float element1, element2, element3, element4, element5, element6;
System.out.println("the elements of first vector : ");
element1 = input.nextFloat();
element2 = input.nextFloat();
element3 = input.nextFloat();
v1 = new Vector3d(element1, element2, element3);
System.out.println("the elements of second vector : ");
element4 = input.nextFloat();
element5 = input.nextFloat();
element6 = input.nextFloat();
v2 = new Vector3d(element4, element5, element6);
v3 = new Vector3d(0, 0, 0);
System.out.println("the inputed first Vector");
v1.Vectorprint();
System.out.println("the inputed second Vector");
v2.Vectorprint();
v3.addition(v1, v2);
v3.Difference(v1, v2);
v3.dotProduct(v1, v2);
System.out.println("sellect a number to multiplication with Vector : ");
int multiplicator = input.nextInt();
System.out.println("Which Vector would you like to sellect for first input (V1) and second (V2)");
String answer = input.next();
if ("V1".equalsIgnoreCase(answer)) {
System.out.println("The Vector after multiplication : " + v3.multiplcation(v1, multiplicator));
} else if ("V2".equalsIgnoreCase(answer)) {
System.out.println("The Vector after multiplication : " + v3.multiplcation(v2, multiplicator));
}
v3.unitVector(v1);
}
}
вот что я имею в виду именно то, что массив не может быть преобразован в двойной:
package menu1;
import java.util.Arrays;
import java.util.Scanner;
public class Menu1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("enter the size of vektor : ");
int vectorSize=input.nextInt();
vector1 vectorArray[] =new vector1[vectorSize];
vector1 object1 =new vector1();
double convertor =vectorArray[vectorSize];
for (int i=0;i<vectorArray.length;i++){
vectorArray[i]=input.nextDouble();
}
System.out.println("the elements of the vector are :"+Arrays.toString(vectorArray));
vector1 v1, v2, v3;
float element1, element2, element3, element4, element5, element6;
System.out.println("the elements of first vector : ");
element1 = input.nextFloat();
element2 = input.nextFloat();
element3 = input.nextFloat();
v1 = new vector1(element1, element2, element3);
System.out.println("the elements of second vector : ");
element4 = input.nextFloat();
element5 = input.nextFloat();
element6 = input.nextFloat();
v2 = new vector1(element4, element5, element6);
v3 = new vector1(0, 0, 0);
System.out.println("the inputed first Vector");
v1.Vectorprint();
System.out.println("the inputed second Vector");
v2.Vectorprint();
v3.addition(v1, v2);
v3.Difference(v1, v2);
v3.dotProduct(v1, v2);
System.out.println("sellect a number to multiplication with Vector : ");
int multiplicator = input.nextInt();
System.out.println("Which Vector would you like to sellect for first input (V1) and second (V2)");
String answer = input.next();
if ("V1".equalsIgnoreCase(answer)) {
System.out.println("The Vector after multiplication : " + v3.multiplcation(v1, multiplicator));
} else if ("V2".equalsIgnoreCase(answer)) {
System.out.println("The Vector after multiplication : " + v3.multiplcation(v2, multiplicator));
}
v3.unitVector(v1);
}
}
новый код после модификации:
package menu1;
import java.util.Arrays;
import java.util.Scanner;
public class Vector {
private final double vector1[];
private final double vector2[];
private final double vector3[];
Vector(double matrix1[], double matrix2[],double matrix3[]) {
this.vector1 = matrix1;
this.vector2 = matrix2;
this.vector3 = matrix3;
}
Scanner input = new Scanner(System.in);
public void VectorInput(double Matrix[]) {
System.out.println("input the elements of Vector :");
for (int i = 0; i < Matrix.length; i++) {
Matrix[i] = input.nextDouble();
}
}
public void VectorOutput(double Matrix[]) {
System.out.println(Arrays.toString(Matrix));
}
/**
*
* @param Matrix1
* @param Matrix2
* @param Matrix3
*/
public void addition(double Matrix1[], double Matrix2[],double Matrix3[]) {
double Matrix4[] = new double[Matrix1.length];
for (int i = 0; i < Matrix1.length; i++) {
Matrix4[i] = Matrix1[i] + Matrix2[i]+Matrix3[i];
}
System.out.println("The Vector after addition :" + Arrays.toString(Matrix4));
}
public void Difference(double Matrix1[], double Matrix2[]) {
double Matrix3[] = new double[Matrix1.length];
for (int i = 0; i < Matrix1.length; i++) {
Matrix3[i] = Matrix1[i] - Matrix2[i];
}
System.out.println(Arrays.toString(Matrix3));
}
public void ScalarProduct(double Matrix1[], double Matrix2[],double Matrix3[]) {
double Matrix4[] = new double[Matrix1.length];
for (int i = 0; i < Matrix1.length; i++) {
Matrix4[i] = Matrix1[i] * Matrix2[i]*Matrix3[i];
}
System.out.println("The scalarproduct :" + Arrays.toString(Matrix4));
}
public void multiplcation(double Matrix[], int number) {
double Matrix3[] = new double[Matrix.length];
for (int i = 0; i < Matrix.length; i++) {
Matrix3[i] = Matrix[i] * number;
}
System.out.println("The Vector after multiplcation :" + Arrays.toString(Matrix3));
}
/* I need help here , because I didn't find the right way to calculate the unitvector
and the result was unfortunately wrong
*/
public void unitVector(double matrix[]) {
double matrix2[]=new double[matrix.length];
double longVector = 0;
double result = 0;
for (int i = 0; i < matrix.length; i++) {
matrix2[i] = Math.sqrt(matrix[i]*matrix[i]);
// for (int j = 0; j < matrix2.length; j++) {
result = matrix[i] / matrix2[i];
}
// }
System.out.println("The long of the Vector :"+ Arrays.toString(matrix2));
System.out.println("The unitvector is :" + result);
}
}
package menu1;
import java.util.Scanner;
public class Menu1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("sellect the size of vectors (maximum 6 elements):");
int vectorSize = input.nextInt();
if (vectorSize > 6) {
System.err.println("Error ! , the number of elements is not acceptable ");
return;
}
double Arrayvector1[] = new double[vectorSize];
double Arrayvector2[] = new double[vectorSize];
double Arrayvector3[] = new double[vectorSize];
Vector object = new Vector(Arrayvector1, Arrayvector2, Arrayvector3);
object.VectorInput(Arrayvector1);
object.VectorInput(Arrayvector2);
object.VectorInput(Arrayvector3);
System.out.println("The elements of first Vector : ");
object.VectorOutput(Arrayvector1);
System.out.println("The elements of second Vector : ");
object.VectorOutput(Arrayvector2);
System.out.println("The elements of third Vector : ");
object.VectorOutput(Arrayvector3);
// System.out.println("The addition of two Matrix : ");
object.addition(Arrayvector1, Arrayvector2, Arrayvector3);
System.out.println("First Vector - Second vector:");
object.Difference(Arrayvector1, Arrayvector2);
System.out.println("Second Vector - Firstvector:");
object.Difference(Arrayvector2, Arrayvector1);
object.ScalarProduct(Arrayvector1, Arrayvector2, Arrayvector3);
System.out.println("input a number for multiplication with Vector : ");
int multiplicator = input.nextInt();
System.out.println("Which Vector would you like to sellect for first one input (1), second (2) and third(3)");
String answer = input.next();
if ("1".equalsIgnoreCase(answer)) {
// System.out.println("The Vector after multiplication : " );
object.multiplcation(Arrayvector1, multiplicator);
object.unitVector(Arrayvector1);
} else if ("2".equalsIgnoreCase(answer)) {
// System.out.println("The Vector after multiplication : ");
object.multiplcation(Arrayvector2, multiplicator);
object.unitVector(Arrayvector2);
} else if ("3".equalsIgnoreCase(answer)) {
object.multiplcation(Arrayvector3, multiplicator);
object.unitVector(Arrayvector3);
}
}
}
```
В чем проблема? Я не нахожу это очень ясным.
В вашем вопросе отсутствует конкретная постановка проблемы. Никто не должен рыться во всем вашем коде, чтобы выяснить, что с ним не так.




Итак, вы хотите иметь возможность создавать массив с объектами Vector3d в качестве элементов. Для этого вам нужно использовать коллекцию. Есть много типов в зависимости от того, что вы хотите сделать. По сути, коллекция - это объект, используемый для хранения или группировки нескольких элементов, а также способы использования этих элементов (добавление, удаление, доступ). Для ваших нужд вы можете использовать самый распространенный - ArrayList. Это значение по умолчанию, с которого начинают большинство программистов, и оно подходит для большинства нужд.
ArrayList array;
Я не буду вдаваться в подробности о том, как его использовать, это то, что вам нужно выяснить самостоятельно.
когда я создаю этот список и устанавливаю размер, как я могу сделать три вектора без использования параметризованного конструктора.
@samihtw Я ответил на ваши вопросы?
спасибо, я знаю, что мне нужно использовать коллекцию, но я еще не нашел подобного примера или учебника, не могли бы вы прислать мне пример. Я нашел много примеров доступа, сложения, умножения элементов в статических массивах, но не в динамических.
Я не знаю, как я могу получить доступ к элементам в динамических массивах, особенно это будет каждый раз по-разному, и это также зависит от решения пользователя, тогда у нас нет конкретного индекса для определения элементов или чисел, которые можно добавить друг с другом. честно говоря, я не нашел никакого руководства по этому поводу
Я думаю, что вы спрашиваете тривиальную задачу: «Я не знаю, как мне получить доступ к элементам в динамических массивах». Каждый программист должен уметь это делать. Это очень распространено, поэтому должны быть тысячи руководств. Первый шаг - поиск.
Если вы посмотрите на код после изменения, вы точно поймете, что я имел в виду. Я сделал это без использования arrayList, как вы сказали. Теперь я пытаюсь найти способ вычислить единичный вектор, используя массив в качестве параметра в методе единичного вектора.
Если вам нужен динамический массив, я бы просто использовал какой-то
List, напримерArrayList. Кроме того, непонятно, о чем вы спрашиваете, что именно не работает?