试图遍历数组中的数组

时间:2018-05-08 05:28:23

标签: java arrays

我正在尝试打印noteArray的每个部分(例如:19,然后" D"作为单独的部分)但是通过使用For循环,我得到每行的mumble up打印消息。 " processNotes(noteArray)"方法是我希望输出看起来的方式。

非常感谢任何帮助!

public class question2 {
public static void main(String[] args) {
    Note[] noteArray = new Note[5];
    noteArray[0] = new Note(19, "D");
    noteArray[1] = new Note(10, "C");
    noteArray[2] = new Note(23, "F");
    noteArray[3] = new Note(20, "B");
    noteArray[4] = new Note(32, "C");
    processNotes(noteArray);
    for(Note i : noteArray){
        System.out.println(i);
        }
}
private static void playNote() {
    int numberDuration = Note.getduration();
    String letterPitch = Note.getpitch();
    System.out.println("The note "+ letterPitch +" is played for "+ 
numberDuration +" seconds.");
    return;
}
public static void processNotes(Note[] notes) {
    playNote();
}
}
class Note
{
private static String pitch;
private static int duration;
public Note(int duration, String pitch) {
    this.pitch = "C";
    this.duration = 10;
}
public static int getduration() {
    return duration;
}
public void setduration(int duration) {
    Note.duration = duration;
}
public static String getpitch() {
    return pitch;
}
public void setpitch(String pitch) {
    Note.pitch = pitch;
}
}

编辑:

输出我想:     音符C播放10秒钟。

我得到的数组输出:

Note@6d06d69c
Note@7852e922
Note@4e25154f
Note@70dea4e
Note@5c647e05

3 个答案:

答案 0 :(得分:3)

你有两种可能性。

首先,覆盖你的toString()方法,以便在System.out.println()时根据需要打印你的笔记。

其次,您可以在循环中,而不是打印注释:

for(Note i : noteArray){
    System.out.println(i.getPitch());
    System.out.println(i.getDuration());
}

答案 1 :(得分:3)

将以下内容添加到Note类:

public String toString() {
    return "Duration = " + duration + ", pitch = " + pitch;
}

Demo

来自object.toString

  

返回对象的字符串表示形式。一般来说,   toString方法返回一个“文本表示”的字符串   宾语。结果应该是简洁但信息丰富的表示   一个人很容易阅读。建议所有人   子类重写此方法。

     

Object类的toString方法返回一个由。组成的字符串   对象是实例的类的名称,at-sign   字符“@”,以及散列的无符号十六进制表示   对象的代码。换句话说,此方法返回一个相等的字符串   价值:

getClass().getName() + '@' + Integer.toHexString(hashCode())

您可以覆盖此方法以获得更有意义的输出。

建议进一步阅读:The connection between 'System.out.println()' and 'toString()' in Java

答案 2 :(得分:1)

您可以覆盖Note类的toString方法,因为sysout隐式调用toString。