将类对象移动到数组中的Java问题。不确定构造函数或数组声明是否存在错误

将类对象移动到数组中的Java问题。不确定构造函数或数组声明是否存在错误,java,arrays,class,Java,Arrays,Class,在将我创建的对象移动到数组中时遇到一些问题。 所以我实际上需要做的是创建对象,而不是将它们移动到数组中。 我不太确定我做错了什么 如果您认为我应该使用arraylist而不是数组,请这样说 我做了一个快速的例子,数据字段比我实际的程序少,但它与我的大问题非常相似。 谢谢你抽出时间 public class Music { private static String songTitle; private static double songLength; private int rati

在将我创建的对象移动到数组中时遇到一些问题。 所以我实际上需要做的是创建对象,而不是将它们移动到数组中。 我不太确定我做错了什么

如果您认为我应该使用arraylist而不是数组,请这样说

我做了一个快速的例子,数据字段比我实际的程序少,但它与我的大问题非常相似。 谢谢你抽出时间

    public class Music {

private static String songTitle;
private static double songLength;
private int rating;




    public Music(String songTitle, double songLength, int rating) {
    // TODO Auto-generated constructor stub
    }
    public static String getsongTitle()
    {
        return songTitle;
    }
    public static double getsongLength()
     {
    return songLength;
    }
     public static   int rating()
    {
      return rating();
     }

     //constructors for music objects
     Music song1 = new Music ("song name", 5.32, 10);
     Music song2 = new Music ("billy",1.2, 8 );
     Music song3 = new Music ("hello", 1.5, 9 );

     static        //Create array and make posistion 0 = song1

     Music[] songDetails = new Music[3];{
      songDetails[0] = song1;
        }

       public static void main(String[] args) {
       //print first place in array
        System.out.println(songDetails[0]);


       }

Edit在代码中有拼写错误,并且在数组声明中缺少static一词

这里几乎一切正常;)有很多方法。只需从非静态方法访问songDetails(并将音乐字段更改为非静态,并实现音乐构造函数):

您可能还希望这样做:

public class TryMusic {

    //Create array and make posistion 0 = song1
    Music[] songDetails;// = new Music[3];

    {
        //if you still need initialization block, but don't need field for each song
        songDetails = new Music[3];
        //possibly iteration? if no then simply use {} syntax instead
        songDetails[0] = new Music("song name", 5.32, 10);
        songDetails[1] = new Music("billy", 1.2, 8);
        songDetails[2] = new Music("hello", 1.5, 9);
    }

    public void go() {
        //print first place in array
        System.out.println(songDetails[0]);
    }

    public static void main(String[] args) {
        new TryMusic().go();
    }
}
或者这个(可读性更强):

或(更灵活):

和带有列表的静态版本:

    public class TryMusic {

    //Create array and make posistion 0 = song1
    static List<Music> songDetails = new ArrayList(){{
       add(new Music("song name", 5.32, 10));
       add(new Music("song name", 5.32, 10));
       add(new Music("hello", 1.5, 9));
    }};

    public static void main(String[] args) {
        System.out.println(songDetails.get(0));
    }
}

一个非常简单的方法是:

 //constructors for music objects
 static Music song1 = new Music ("song name", 5.32, 10);
 static Music song2 = new Music ("billy",1.2, 8 );
 static Music song3 = new Music ("hello", 1.5, 9 );

 static Music[] songDetails = { song1, song2, song3 };

 ...

 public static void main(String[] args) {

    System.out.println(songDetails[0].getsongTitle());

 }

你有什么“问题”?您希望发生什么以及实际发生了什么?当我运行它时,songDeatils数组的位置0处有一个空结果。我希望它应该说“歌曲名称,5.32 10发现您的问题。看看我答案的底部,你的音乐课被打破了——使用实例字段,在构造函数中指定字段值等等。看看我的例子,如果我将你的版本与静态arraylist一起使用,我会得到结果Music@30c221我做错了什么?我尝试了这里建议的几个解决方案,它们都得出了类似的结果。那个么就可以了。您必须重写音乐中的
toString
方法才能获得人类可读的输出:)查看固定音乐类(实例字段)。很好,最后一点您编写的示例似乎工作正常,非常感谢您的帮助。我接受了你的回答。现在我要把它应用到一个更复杂的类上。谢谢,阿加尼现在为示例添加了一些注释。也许你应该看看他们:)
public class TryMusic {

    //Create array and make posistion 0 = song1
    List<Music> songDetails = new ArrayList(){{
       add(new Music("song name", 5.32, 10));
       add(new Music("song name", 5.32, 10));
       add(new Music("hello", 1.5, 9));
    }};


    public void go() {
        //print first place in array
        System.out.println(songDetails.get(0));
    }

    public static void main(String[] args) {
        new TryMusic().go();
    }
}
public class TryMusic {

//Create array and make posistion 0 = song1
static Music[] songDetails = new Music[3];
static {
    songDetails[0] = new Music("song name", 5.32, 10);
    songDetails[1] = new Music("billy", 1.2, 8);
    songDetails[2] = new Music("hello", 1.5, 9);
}


public static void main(String[] args) {
    System.out.println(songDetails[0]);
}

}
    public class TryMusic {

    //Create array and make posistion 0 = song1
    static List<Music> songDetails = new ArrayList(){{
       add(new Music("song name", 5.32, 10));
       add(new Music("song name", 5.32, 10));
       add(new Music("hello", 1.5, 9));
    }};

    public static void main(String[] args) {
        System.out.println(songDetails.get(0));
    }
}
public class Music {

    private String songTitle;
    private double songLength;
    private int rating;

    public Music(String songTitle, double songLength, int rating) {
        this.songTitle = songTitle;
        this.songLength = songLength;
        this.rating = rating;

    }

    public String getsongTitle() {
        return songTitle;
    }

    public double getsongLength() {
        return songLength;
    }

    public int rating() {
        return rating;
    }

    @Override
    public String toString() {
        return "Music{" + "songTitle=" + songTitle + ", songLength=" + songLength + ", rating=" + rating + '}';
    }
}
 //constructors for music objects
 static Music song1 = new Music ("song name", 5.32, 10);
 static Music song2 = new Music ("billy",1.2, 8 );
 static Music song3 = new Music ("hello", 1.5, 9 );

 static Music[] songDetails = { song1, song2, song3 };

 ...

 public static void main(String[] args) {

    System.out.println(songDetails[0].getsongTitle());

 }