java - 在其他类中实现对象参数

原文 标签 java

我希望有人可以帮助我解决这两个困扰我的问题。我有两个类,第一个类生成带有随机值的2D数组。

import java.util.concurrent.ThreadLocalRandom;

public class Guitar {

private int strings;
private int chords;

public Guitar(int mstrings, int mchords) {
    this.strings = mstrings;
    this.chords = mchords;
}

private double[][] song = new double[strings][chords];

public void generateSong() {
    for (int i = 0; i < song.length; i++) {
        for (int j = 0; j < song[i].length; j++) {
            song[i][j] = ThreadLocalRandom.current().nextDouble(27.5, 4186);
            System.out.printf(" %.2f",song[i][j]);
        }
        System.out.println();
    }
}

}


行和列的数量由命令行参数确定。 args [0]是行数,args [1]是列数。我将它们转换为主方法类中的int变量

public class Songwriter {

public static void main(String[] args) {

    System.out.println("Guitar(): Generated new guitar with " + args[0] + " strings. Song length is " + args[1] + " chords.");

    String args0 = args[0];
    int strings = Integer.parseInt(args0);
    String args1 = args[1];
    int chords = Integer.parseInt(args1);

    Guitar guitarObj1 = new Guitar(strings, chords);
    guitarObj1.generateSong();

}

}


我的问题在于传递命令行参数的int变量以使2D数组具有相应的大小。我知道当我将字符串和和弦变量设置为3和4或Guitar类本身中的任何值时,我的代码并不是完全错误的b / c,表格可以正常打印。

对不起,如果我似乎一无所知。我的课程仅覆盖了有关面向对象编程的第一章,而我还没有掌握基础知识。

最佳答案

这是有问题的行:
private double[][] song = new double[strings][chords];

当您创建Guitar类的新对象时,song数组将使用当时stringschords的值初始化(很可能为0)。

更改为此:

private double[][] song;

public Guitar(int mstrings, int mchords) {
    this.strings = mstrings;
    this.chords = mchords;

    song = new double[mstrings][mchords];
}


编辑:OP,您刚刚回答了自己的问题:)


它不会崩溃,但唯一的输出是系统中的system.out.print
第一行为主。我相信是因为弦和弦
变量默认为0,从而使数组为0x0,而我无法
改变他们的价值观

关于java - 在其他类中实现对象参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36417084/

相关文章:

java - Spring Batch-在Eclipse中作为应用程序运行-SQLException无效的架构名称-JUnit

java - 如何初始化所有元素为False的2D boolean 数组?

java - 如何在Java中查找类文件的包

java - 尝试在 Java 中将 JSON 解析为字符串

java - 出现提示时为什么无法打开输入文件?

java - 连接到Java客户端的C服务器套接字问题

java - 通过扩展Thread类来创建线程

java - 在TableCellRenderer中使用自定义的Swing JComponent

java - twitter API识别启用了直接消息传递的用户

java - 对 Spring Bean 萌芽和破坏的一些怀疑