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