2017-05-19 24 views
1

文字列とintだけでなく、文字列配列とint配列を保持するオブジェクトを適切に作成する方法を理解するのに少し問題があります。私は現在、このJavaで文字列、文字列配列、およびint配列を保持するオブジェクトを作成するにはどうすればよいですか?

public class Gamebook { 
    Section[] sections = new Section[6]; 
    String storyText; 
    String[] choiceText; 
    int[] choiceSections; 

public Gamebook() { 
    storyText = ""; 
    choiceText = new String[1]; 
    choiceSections = int[];  
    } 
} 

は私が正しく理解していれば、このセクションのオブジェクト、それらの6の配列を作成します、だけでなく、私のセクションオブジェクトがstoryText文字列、choiceTextの文字列配列、およびchoiceSectionsを持つことを可能にしていますint配列

しかし、これはハードコードされているように私は持っているtxtファイルを読んで、ストーリーテキストやその他の必要な情報を取り出し、各セクションオブジェクトに割り当てる必要があります。私はJavaのオブジェクト指向の理解が不足しているかもしれないと思っていますが、YouTubeでいくつかのビデオを見た後では、ほとんどが複数の属性を持つオブジェクトを処理していませんでした。メソッドを使用して情報を解析して "空白"を埋めること。

+0

あなたのセクション宣言 –

+0

を投稿することができますこれは、セクション(文字列、文字列[]、intです[]) – Serkuto

+0

私はArrayListを使用することをお勧めしますが、私はまだあなたがなぜ使用するのか知りたいですクラスセクション?このクラスには3つのプロパティが含まれていますが、問題は何ですか? –

答えて

1

はあなたがと遊ぶことができる一例である、あなたのすべてのオブジェクトは、このtutorialをチェックアウトし保存します。これは、配列の代わりにリストを使用します。リストを配列で置き換えることはできますが、コンストラクタ内の配列のサイズを設定する必要があります。また、配列を追加すると、処理する必要がある新しい問題が発生します。

AlbumInfoクラス:

import java.util.*; 

/** 
* 
* @author Sedrick 
*/ 
public class AlbumInfo { 

    private String albumName; 
    private String artist; 
    private List<String> tracksTitle; 
    private List<String> tracksLength; 

    public AlbumInfo() 
    { 
     albumName = "Add Album Name"; 
     artist = "Add Artist Name"; 
     tracksTitle = new ArrayList(); 
     tracksLength = new ArrayList(); 
    } 

    /** 
    * @return the albumName 
    */ 
    public String getAlbumName() 
    { 
     return albumName; 
    } 

    /** 
    * @param albumName the albumName to set 
    */ 
    public void setAlbumName(String albumName) 
    { 
     this.albumName = albumName; 
    } 

    /** 
    * @return the artist 
    */ 
    public String getArtist() 
    { 
     return artist; 
    } 

    /** 
    * @param artist the artist to set 
    */ 
    public void setArtist(String artist) 
    { 
     this.artist = artist; 
    } 

    /** 
    * @return the tracksTitle 
    */ 
    public List<String> getTracksTitle() 
    { 
     return tracksTitle; 
    } 

    /** 
    * @param tracksTitle the tracksTitle to set 
    */ 
    public void addTrackTitle(String trackTitle) 
    { 
     this.tracksTitle.add(trackTitle); 
    } 

    /** 
    * @return the tracksLength 
    */ 
    public List<String> getTracksLength() 
    { 
     return tracksLength; 
    } 

    /** 
    * @param tracksLength the tracksLength to set 
    */ 
    public void addTrackLength(String trackLength) 
    { 
     this.tracksLength.add(trackLength); 
    } 

} 

主なテストクラス:

import java.util.*; 

/** 
* 
* @author Sedrick 
*/ 
public class AlbumTest { 

    static final String[] trackTitles = {"Ambitionz Az a Ridah", "All Bout U", "Skandalouz", "Got My Mind Made Up", "How Do U Want It", "2 of Amerikaz Most Wanted", "No More Pain", "Heartz of Men", "Life Goes On", "Only God Can Judge Me", "Tradin' War Stories", "California Love(Remix)", "I Ain't Mad at Cha", "What'z Ya Phone #"}; 

    static final String[] trackLength = {"4:39", "4:37", "4:09", "5:14", "4:47", "4:07", "6:14", "4:43", "5:02", "4:57", "5:29", "6:25", "4:53", "5:10"}; 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     // Add album info 
     AlbumInfo allEyesOnMeDiscOne = new AlbumInfo(); 
     allEyesOnMeDiscOne.setAlbumName("All Eyes On Me"); 
     allEyesOnMeDiscOne.setArtist("Tupac"); 
     for (int i = 0; i < trackTitles.length; i++) { 
      allEyesOnMeDiscOne.addTrackTitle(trackTitles[i]); 
     } 

     for (String entry : trackLength) { 
      allEyesOnMeDiscOne.addTrackLength(entry); 
     } 

     //Print album info 
     System.out.println("Album Name: " + allEyesOnMeDiscOne.getAlbumName()); 
     System.out.println("Album Artist: " + allEyesOnMeDiscOne.getArtist()); 
     List albumTitles = allEyesOnMeDiscOne.getTracksTitle(); 
     List albumTitlesLength = allEyesOnMeDiscOne.getTracksLength(); 

     for (int i = 0; i < albumTitles.size(); i++) { 
      System.out.println("Title: " + albumTitles.get(i) + " Length: " + albumTitlesLength.get(i)); 
     } 

    } 
} 
+0

これはまさに私が探していた内訳です!どうもありがとうございます!私は非常に視覚的な学習者であり、私のベルトの下でより多くのコーディングを得ることを心配しています。一週間前に始まり、順調に進んでいますが、これは1トンを助けるでしょう! – Serkuto

1

アレイの問題は、サイズが固定されていることです。意味:これは、

someArray = new Whatever[... 

書くときあなたは要素の数を知る必要があります:ファイルからの情報を解析する際に次の2つのオプションがあります:大きな空の配列を持つ

  • スタートをし、を追跡します空のスロットに入れた要素。スペースを使い果たした場合は、大きな配列にコピーする必要があります。最後に完全なサイズの配列のエントリをコピーすることができます。
  • あなたはJava ListとArrayListを使用します。これにより、要素を動的に追加したり削除したりすることができます。
+0

配列部分の説明をありがとうございますが、私はこれらのプロパティをすべて単一のオブジェクトに追加するというコンセプトに苦労しています。 – Serkuto

+0

私は完全な質問をしていない。おそらくセクションクラスの関連部分を質問に追加するのに役立ちます。いずれにせよ、セクションに属するすべてのものはセクションクラスのフィールドでなければなりません。セクションに属する詳細を持つ別のクラスに別の配列があってはなりません。 – GhostCat

2

使用Araylistそれはそれはあなたを助けるでしょうか、ここでは、このone

関連する問題