[英]Could anyone help me with why my Java method isn't quite doing what I'm expecting it to do?
[英]I'm trying to program something from an exercise in my Java Book, not quite getting what is being asked of me
它討論了泛型類,並說明了如何從導入ArrayList的ArrayList中創建不是String,Integer或Double的泛型類型的類。
該書明確指出您可以編寫如下字段:
私有ArrayList成員; 私有ArrayList機器;
然后您可以基於此在構造函數中創建Classs並將其分配。
練習4.4說要創建一個“庫”的私有字段,該字段可以容納“ Book”類型的ArrayList。
練習4.5要求一個可以容納一個ArrayList of Student的cs101局部變量。
然后到4.7,它想分配給庫cs101和track變量,以創建適當的ArrayList對象。
這是我寫的內容(不包括某些方法),將其添加到BlueJ項目文件夾中已經可用的項目中。
導入java.util.ArrayList;
/**
* A class to hold details of audio files.
*
* @author David J. Barnes and Michael Kölling
* @version 2011.07.31
*/
public class MusicOrganizer
{
// An ArrayList for storing the file names of music files.
private ArrayList<String> files;
private ArrayList<Book> library;
private ArrayList<MusicTracks> tracks;
/**
* Create a MusicOrganizer
*/
public MusicOrganizer()
{
ArrayList<Student> cs101;
files = new ArrayList<String>();
library = new ArrayList<Book>();
cs101 = new ArrayList<Student>();
}
它告訴我找不到Book和MusicTracks的符號,但是我已經按照該書定義私有ArrayList成員的方式定義了它們。 和專用的ArraryList機器; 所以我對如何找不到符號感到困惑,因為它甚至也找不到我教科書中定義的符號,這使我相信也許是我的計算機?
你們有什么感想?
您需要具有一個名為“ Book”的類和一個名為“ Student”的類,該代碼才能正確。 ArrayList類定義為ArrayList,E是任何類型的對象的占位符。
當您創建這樣的數組列表時
ArrayList<Book> = new ArrayList<>();
您要說的是要創建一個可以容納Book對象的數組列表。 如果沒有名為Book的Class,Java將不會知道您想要什么。 創建2個簡單的類,例如
public class Book{
private String name;
public Book(String n){
this.name = n;
}
//getters and setters after
}
還有一個學生班
public class Student{
private String name;
public Student(String n){
this.name = n;
}
//getters and setters after
}
將它們添加到您的項目中,由於您有Book類和Student類,因此ArrayList聲明現在有效。
您要告訴程序您想要一個名為“ Library”的Book對象的數組列表和一個名為cs101的Student對象的數組列表。 現在,您必須創建那些對象/類。 您不必創建字符串類,因為Java已經有了適合您的String類。
書本類:
public class Book{
private String name, genre, author;
//This is called a constructor that instantiates Book objects
public Book(String name, String genre, String author){
//now you build the book object by assigning THIS particular book object with the passed in values
this.name = name;
this.genre = genre;
this.author = author;
}
}
現在,您必須為學生做同樣的事情。 您還可能希望使用訪問/更改方法(getter和setter)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.