Мой вопрос касается использования массивов объектов. Для каждого объекта, который я создал, затем установите входные значения сканера. Это связано с тем, что выходные данные показывают значения в конструкторе для каждого созданного объекта. Каждый объект, вызываемый с помощью функции get, отображает одинаковые значения. Я хочу, чтобы у каждого объекта были свои значения.
public GuitarSpecifications() {
this.guitarColor = "Red";
this.numStrings = 6;
this.guitarLength = 28.2;
this.guitarManufacturer = "Gibson";
}
Код выше показывает мой созданный мной конструктор. Цель этого конструктора - установить значения любых переменных, которые еще не установлены сканером.
//This code was tested and worked. Creating the instance of the objects
public static void instanciateAll(GuitarSpecifications[] guitarSpecifications) {
for (int i = 0; i < guitarSpecifications.length; i++) {
if (guitarSpecifications.length != 0) {
guitarSpecifications[i] = new GuitarSpecifications();
} else {
System.out.println("Array of objects not created");
}
}
}
Этот код выше показывает, что мои объекты создаются.
//Setting the values of the instantiated objects
public static void setAll(GuitarSpecifications[] guitarSpecifications, Scanner input) {
for (int index = 0; index < guitarSpecifications.length; index++) {
System.out.println("Enter guitar color: ");
String gColor = input.next();
guitarSpecifications[index].setGuitarColor(gColor);
System.out.println("Enter guitar length: ");
double gLength = input.nextDouble();
guitarSpecifications[index].setGuitarLength(gLength);
System.out.println("Enter number of strings on guitar: ");
int gStrings = input.nextInt();
guitarSpecifications[index].setNumStrings(gStrings);
System.out.println("Enter guitar manufacturer: ");
String gManufacturer = input.next();
guitarSpecifications[index].setGuitarManufacturer(gManufacturer);
}
input.close();
}
Код выше показывает мои настройки значений.
//Displays the values entered from user input from setAll function
public static void displayAll(GuitarSpecifications[] guitarSpecifications) {
for (int i = 0; i < guitarSpecifications.length; i++) {
System.out.println(guitarSpecifications[i].getGuitarManufacturer());
System.out.println();
System.out.println(guitarSpecifications[i].getGuitarColor() + "\n");
System.out.println(guitarSpecifications[i].getNumStrings() + "\n");
System.out.println(guitarSpecifications[i].getGuitarLength() + "\n");
System.out.println("**********************************************\n");
}
}
Наконец, мой вывод с вызовами функции get из класса GuitarSpecifications. Это показано в приведенном выше коде.
run:
Enter guitar color:
Black
Enter guitar length:
87.4
Enter number of strings on guitar:
7
Enter guitar manufacturer:
Fender
Приведенный выше код является фактическим вводом
Gibson
Red
6
28.2
**********************************************
Приведенный выше код показывает вывод. Это, конечно, не желаемый результат. Я использовал только один экземпляр объекта. Этот вывод будет повторяться, если у меня будет создано 20 объектов.
Опять же, результаты, которые я хочу получить, - показать правильный вывод каждого созданного класса с помощью сканера. Я посмотрел на другие вопросы в этой форме без удачи. Я также мог бы неправильно понять ответы на вопросы.