我正在尝试打印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
答案 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;
}
返回对象的字符串表示形式。一般来说, 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。