Сега ще ви покажа едно малко решение на една задача, който имах за домашна работа по предмета Увод в програмирането. Трябва да се напише клас, който съдържа два вектора и методи за действия над тях. Векторите се представят като, последователности от числа, които записваме в масив. Класа има конструктор, който инициализира двата вектора и ги записва в предназначените за това полета. За целите на примера декларираме класа в main функцията му и там боравим с съответните методи.
/* * Това е клас, който съдържа методи за дефиниране на вектори, * събиране на вектори, скаларно произведение на вектори, * умножение на вектор с число и извеждане на вектор * * @version 1.0 19 Dec 2010 * @author Николай Стоицев */ public class Vector { // първи вектор с който ще се извършват операциите public static int[] vector1; // втори вектор с който ще се извършват операциите public static int[] vector2; /* * Конструктур на класа * * @param vec1 първият вектор с който ще работи * * @param vec2 вторият вектор с който ще работи */ public Vector(int[] vec1, int[] vec2) { vector1 = vec1; vector2 = vec2; } public static void main(String[] args) { vector1 = fill(); // инициализираме първия вектор vector2 = fill(); // инициализираме втория вектор Vector vect = new Vector(vector1, vector2); // декларираме класа Vector System.out.println("Сумата на двата вектора е:"); print(vect.sum()); System.out.println("Произведението на двата вектора е:"); print(vect.product()); System.out.print("Въведете скалар: "); java.util.Scanner in = new java.util.Scanner(System.in); int scalar = in.nextInt(); System.out.println("Произведението на вектора 1 със скалар е:"); doublePrint(vect.multiplyByNumber(vector1, scalar)); System.out.println("Произведението на вектора 2 със скалар е:"); doublePrint(vect.multiplyByNumber(vector2, scalar)); } /* * Сума на векторите като сбор на компонентите на декартовите им координати * * @return resultVector вектора резултат от операцията */ public int[] sum() { int size = Math.max(vector1.length, vector2.length); int min = Math.min(vector1.length, vector2.length); int[] resultVector = new int[size]; for (int i = 0; i < min; i++) { resultVector[i] = vector1[i] + vector2[i]; } if (vector1.length > vector2.length) { for (int i = size - min; i < size; i++) { resultVector[i] = vector1[i]; } } else if (vector1.length < vector2.length) { for (int i = size - min; i < size; i++) { resultVector[i] = vector2[i]; } } return resultVector; } /* * Произведението на векторите като произведение на компонентите на * декартовите им координати * * @return resultVector вектора резултат от операцията */ public int[] product() { int size = Math.max(vector1.length, vector2.length); int min = Math.min(vector1.length, vector2.length); int[] resultVector = new int[size]; for (int i = 0; i < min; i++) { resultVector[i] = vector1[i] * vector2[i]; } if (vector1.length > vector2.length) { for (int i = size - min; i < size; i++) { resultVector[i] = vector1[i]; } } else if (vector1.length < vector2.length) { for (int i = size - min; i < size; i++) { resultVector[i] = vector2[i]; } } return resultVector; } /* * Произведение на вектор със скалар * * @param vector вектора с който ще работим * * @param scalar скалара с който ще умножаваме * * @return resultVector вектора резултат от операцията */ public double[] multiplyByNumber(int[] vector, double scalar) { int size = vector.length; double[] resultVector = new double[size]; for (int i = 0; i < size; i++) { resultVector[i] = vector[i] * scalar; } return resultVector; } /* * Запълва елементите на масива с цели цисла, прочетени от клавиатурата * * @return newArray готовият масив */ public static int[] fill() { java.util.Scanner in = new java.util.Scanner(System.in); System.out.print("Брой на елементите на масива: "); int n = in.nextInt(); int[] newArray = new int[n]; for (int i = 0; i < n; i++) { System.out.print((i + 1) + " елемент на масива: "); newArray[i] = in.nextInt(); } return newArray; } /* * Отпечатва елементите на масива * * @param arr масива, който ще бъде отпечатен */ public static void print(int[] arr) { int n = arr.length; for (int i = 0; i < n; i++) { System.out.println("a[" + i + "] = " + arr[i]); } } /* * Отпечатва елементите на масив с реални стойности * * @param arr масива, който ще бъде отпечатен */ public static void doublePrint(double[] arr) { int n = arr.length; for (int i = 0; i < n; i++) { System.out.println("a[" + i + "] = " + arr[i]); } } }