У меня много проблем при попытке создать конструктор, в котором переменные уже имеют значения по умолчанию, а затем вызвать новые переменные, которые я позже установил в классе TestGuitar.Я успешно компилировал мою программу и печатал значения по умолчанию.Мне не удалось сохранить новые, которые я пытался установить в переменной newGuitar в классе TestGuitar.Я знаю, что все проблемы исходят от моих конструкторов.В этой ситуации мне нужен конструктор 0 arg, который создает гитару по умолчанию, и новый конструктор, который создает очень специфическую гитару.
Я установил некоторые частные переменные для гитары по умолчанию.Я хочу, чтобы моя программа возвращала переменные по умолчанию, если я никогда не передаю переменную newGuitar в классе TestGuitar.Если я что-то передаю, т.е. guitarLength 24.75, я хочу, чтобы моя программа вернула это.Более того, я хочу, чтобы эта новая переменная вызывалась методом геттера.Я считаю, что у меня есть решение на 75%, но мне нужна помощь конкретно с проблемами конструктора под рукой.Я просто не думаю, что я достаточно разбираюсь в понятиях конструкторов, чтобы включить 0 arg и определенный конструктор одновременно.
//File name: Guitar.java
//Autor: Michael Joy
//Date: 09/16/2018
//Purpose: Building and testing guitar objects
import java.awt.Color;
import java.util.*;
import java.util.Random;
class Guitar {
//defines the default values for our default guitar if we do not pass anything new to the object
private int numStrings = 6;
private double guitarLength = 28.2;
private String guitarManufacturer = "Gibson";
private Color guitarColor = Color.RED;
private static int i = 1;
private static Random rand = new Random();
//declaring the constructor
public Guitar (){
//all my problems coming from here
this.numStrings = numStrings;
this.guitarLength = guitarLength;
this.guitarManufacturer = guitarManufacturer;
this.guitarColor = guitarColor;
}
public Guitar (int strings, double length, String manufacturer, Color color){
//more problems here
strings = this.numStrings;
length = this.guitarLength;
manufacturer = this.guitarManufacturer;
color = this.guitarColor;
System.out.printf("toString: %s \n ", this);
}
public int getNumStrings() {
return numStrings;
}
public double getGuitarLength() {
return guitarLength;
}
public String getGuitarManufacturer() {
return guitarManufacturer;
}
public Color getGuitarColor(){
return this.guitarColor;
}
public static void playGuitar(){
String[] musicNotes = {"A", "B", "C", "D", "E", "F", "G"};
String[] musicDuration = {"(0.25)","(0.5)","(1)", "(2)","(4)"};
System.out.print("playGuitar: ");
for (i = 1; i < 17; i++){
int index1 = rand.nextInt(musicNotes.length);
int index2 = rand.nextInt(musicDuration.length);
System.out.print(musicNotes[index1]);
System.out.print(musicDuration[index2] + ",");
}
}
public String toString(){
return String.format("%d, %f, %s, %s", numStrings, guitarLength, guitarManufacturer, guitarColor);
}
}
class TestGuitar extends Guitar{
public static void main (String args[] ){
Guitar newGuitar = new Guitar(6, 24.75, "Les Paul", Color.white);
playGuitar();
}
}