【问题标题】:Create a method that returns a String representation of random musical notes with random time duration for those notes?创建一个返回随机音符的字符串表示的方法,这些音符具有随机持续时间?
【发布时间】:2020-06-16 16:28:53
【问题描述】:

我需要playGuitar 方法来返回一个包含 16 个随机持续时间的随机音符的字符串表示形式。输出应如下所示:A(2), G(3), B(0.5), C(1), C(1), D(0.25), …]

另外,如何让 Color 数据字段在我的 Guitar Constructor 中显示为 bluered 而不是 RGB 值?

我不想使用数组。

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;
    } 
}

【问题讨论】:

    标签: java string class methods


    【解决方案1】:

    我修复了您的 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 或@987654329 绘制实际颜色@类。

    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;
        }
    
    }
    

    【讨论】:

    • 谢谢。我每天都在努力学习并变得更好。有时很难掌握其中的逻辑。我为此苦恼了一周。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多