![](/img/trans.png)
[英]6x6 Chess with two dimensional array. Moving elements in an array. <JAVA>
[英]Java problems with moving class objects into an array. Not sure if there is a fault with the constructors or the array declaration
將我創建的對象移動到數組時遇到一些麻煩。 因此,我實際上需要做的是創建對象,而不是將它們移動到數組中。 我不太確定自己在做什么錯。
如果您認為我應該使用arraylist而不是array,請這樣說
我舉了一個簡短的示例,其數據字段少於實際程序,但與我遇到的較大問題完全相同。 感謝您的時間。
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一詞
這里幾乎一切都OK;)有很多方法。 只需從非靜態方法訪問songDetails(並將Music字段更改為非靜態,並實現Music構造函數):
public class TryMusic {
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);
//Create array and make posistion 0 = song1
Music[] songDetails;// = new Music[3];
{
//some initializations goes here
//...
//create array when you know how many songs you have
songDetails = new Music[3];
// and now fill the array. Possibly iteration? if no then simply use {} syntax
songDetails[0] = song1;
songDetails[1] = song2;
songDetails[2] = song3;
}
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
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
//if simply array is enough
Music[] songDetails = { new Music("song name", 5.32, 10),
new Music("billy", 1.2, 8),
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
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();
}
}
編輯提示:數組是靜態的,但初始化不是靜態的。 您在初始化塊之前錯過了static關鍵字:
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());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.