这是另外两个类的驱动方法。我发布在这里 https://codereview.stackexchange.com/questions/33148/book-program-with-arraylist
我需要一些帮助 private static ArrayList getAuthors(String authors)方法。我是一个初学者。所以请帮我完成这个驱动方法。或者给我一些指示。
指令
allAuthors数组的某些元素在两个作者名称之间包含星号“*”。 getAuthors方法使用此星号作为名称之间的分隔符,以将它们分别存储在返回的字符串ArrayList中。
import java.util.ArrayList;
public class LibraryDrive {
public static void main(String[] args) {
String[] titles = { "The Hobbit", "Acer Dumpling", "A Christmas Carol",
"Marley and Me", "Building Java Programs",
"Java, How to Program" };
String[] allAuthors = { "Tolkien, J.R.", "Doofus, Robert",
"Dickens, Charles", "Remember, SomeoneIdont",
"Reges, Stuart*Stepp, Marty", "Deitel, Paul*Deitel, Harvery" };
ArrayList<String> authors = new ArrayList<String>();
ArrayList<Book> books = new ArrayList<Book>();
for (int i = 0; i < titles.length; i++) {
authors = getAuthors(allAuthors[i]);
Book b = new Book(titles[i], authors);
books.add(b);
authors.remove(0);
}
Library lib = new Library(books);
System.out.println(lib);
lib.sort();
System.out.println(lib);
}
private static ArrayList<String> getAuthors(String authors) {
ArrayList books = new ArrayList<String>();
// need help here.
return books;
}
}
答案 0 :(得分:4)
试试这个
private static ArrayList<String> getAuthors(String authors) {
ArrayList books = new ArrayList<String>();
String[] splitStr = authors.split("\\*");
for (int i=0;i<splitStr.length;i++) {
books.add(splitStr[i]);
}
return books;
}
答案 1 :(得分:1)
尝试这个,但实际上我不明白为什么你在for循环中删除ArrayList
的零索引元素。
private static ArrayList<String> getAuthors(String authors) {
ArrayList<String> array = new ArrayList<String>();
String[] authorsArray = authors.split("\\*");
for(String names : authorsArray );
array.add(names);
return array;
}
答案 2 :(得分:1)
我建议在这里使用String.split
(但请记住,此方法使用正则表达式作为参数):
private static ArrayList<String> getAuthors(String authors) {
ArrayList books = new ArrayList<String>();
String[] strgArray = authors.split("\\*");
books.addAll(Arrays.asList(strgArray));
return books;
}
或
private static ArrayList<String> getAuthors(String authors) {
String[] strgArray = authors.split("\\*");
ArrayList books = Arrays.asList(strgArray);
return books;
}
答案 3 :(得分:0)
看看String#split方法,这将帮助您通过星号分隔作者。此方法返回一个数组,因此您需要检查此数组中有多少作者,然后将每个作者存储到ArrayList
中。
答案 4 :(得分:0)
以下是您可以这样做的方法。
authors
字符串拆分为方法参数。 (使用String.split(delim)
方法)for
循环迭代生成的string []数组,并且应将每个迭代元素添加到列表中。 (使用List.add(elem)
方法)现在你知道怎么做了,你需要自己实现代码。