Создать метод, который возвращает строковое представление случайных музыкальных нот со случайной длительностью для этих нот? - PullRequest
1 голос
/ 16 июня 2020

Мне нужен метод playGuitar для возврата строкового представления 16 случайных нот случайной длительности. Результат должен выглядеть так: A(2), G(3), B(0.5), C(1), C(1), D(0.25), …].

Кроме того, как мне сделать так, чтобы поле данных Color отображалось как blue или red, а не значения RGB в моем конструкторе Guitar Constructor?

Я не хочу использовать массивы.

import java.awt.Color;
import java.util.Random;


public class Guitar {
    private int numStrings = 6;
    private double guitarLength = 28.2;
    private String guitarManufacturer = "Gibson";
    private Color guitarColor = Color.red;


    Guitar(){
        int numStrings = 6;
        double guitarLength = 28.2;
        String guitarManufacturer = "Gibson";
        Color guitarColor = Color.red;
    }

    Guitar(int specStrings, double specLength, String specManufacturer, Color specColor){
        numStrings = specStrings;
        guitarLength = specLength;
        guitarManufacturer = specManufacturer;
        guitarColor = specColor;
        //String s1 = Color.toString(specColor);
    }

    public String playGuitar(String str3){
        Random rnd = new Random();

        for (int iCount = 0; iCount<16 ; iCount++){
        char a = (char) (rnd.nextInt(7) + 'A');
        double b = (double) (rnd.nextInt(5)+1);
        String str1 = Double.toString(b);
        String str2 = Character.toString(a);
        //System.out.println(a);
        //System.out.println(str1);
        str3 = str2+"("+str1+")";
        continue;
        //System.out.println(str2+"("+str1+")");
        //System.out.println(str3);
        //String str4 = String.toString(str3);
        //System.out.println(str4);
            }
        return str3;
    }

    public String toString(){
        return numStrings+" "+guitarLength+" "+guitarManufacturer+" "+guitarColor;
    }
    public int getNumStrings (){
        return numStrings;
    }
    public double getGuitarLength(){
        return guitarLength;
    }
    public String getGuitarManufacturer(){
        return guitarManufacturer;
    }
    public Color getGuitarColor(){

        return guitarColor;
    } 
}

1 Ответ

0 голосов
/ 16 июня 2020

Я исправил проблемы с вашим классом Guitar и провел следующий тест метода playGuitar. Я вручную отформатировал вывод, чтобы он соответствовал ответу.

F(2.75), G(2.50), G(0.75), A(0.25), D(1.75), G(0.75), 
F(0.50), C(2.75), A(2.50), A(1.00), A(2.25), E(1.50), 
D(2.50), G(1.25), A(0.50), G(1.00)

Основные изменения, которые я внес:

  1. Я добавил метод main, чтобы проверить класс Guitar.

  2. Я исправил ваш пустой конструктор, чтобы он использовал переменные экземпляра.

  3. Я изменил цвет гитары на String, поскольку вы хотели отображать «красный» или «синий». Класс Color используется для рисования с фактическими цветами с использованием классов Graphics или Graphics2D.

  4. Я исправил множество проблем с вашим классом playGuitar.

Вот код. Надеюсь, вы что-то узнаете, прочитав код.

import java.util.Random;

public class Guitar {
    public static void main(String[] args) {
        Guitar guitar = new Guitar();
        System.out.println(guitar.playGuitar());
    }

    private int numStrings;
    private double guitarLength;
    private String guitarManufacturer;
    private String guitarColor;

    Guitar() {
        numStrings = 6;
        guitarLength = 28.2;
        guitarManufacturer = "Gibson";
        guitarColor = "red";
    }

    Guitar(int specStrings, double specLength,
            String specManufacturer, String specColor) {
        numStrings = specStrings;
        guitarLength = specLength;
        guitarManufacturer = specManufacturer;
        guitarColor = specColor;
    }

    public String playGuitar() {
        Random rnd = new Random();
        String str3 = "";

        for (int iCount = 0; iCount < 16; iCount++) {
            char a = (char) (rnd.nextInt(7) + 'A');
            double b = 0.25d * (rnd.nextInt(11) + 1);
            String str1 = String.format("%.2f", b);
            String str2 = Character.toString(a);
            str3 += str2 + "(" + str1 + ")";
            if (iCount < 15) {
                str3 += ", ";
            }
        }

        return str3;
    }

    @Override
    public String toString() {
        return numStrings + " " + guitarLength + " " +
                guitarManufacturer + " " + guitarColor;
    }

    public int getNumStrings() {
        return numStrings;
    }

    public double getGuitarLength() {
        return guitarLength;
    }

    public String getGuitarManufacturer() {
        return guitarManufacturer;
    }

    public String getGuitarColor() {
        return guitarColor;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...