我需要使用主要方法中的数组,并转移到我的 getBook方法中, 然后将新创建的对象返回到main方法中的数组。
我决定将阵列转移到下一个方法,方法与使用扫描仪相同,直到扫描仪出错时需要调用该方法为止。
public class BookShopApplication
{
public static void main(String[] args)
{
Scanner kybd = new Scanner (System.in);
Book [] books = new Book [10];
for (int i = 0; i > books.length; i++)
{
books[i] = getBook(kybd, Book books[])
}
}
public static Book[] getBook(Scanner kybd, Book books[])
{
System.out.println("What is the title of the next book?");
String readTitle = kybd.nextLine();
System.out.println("What is thr title of thje next book?");
String readAuthor = kybd.nextLine();
if (readAuthor == null)
{
for (int i = 0; i < books.length; i++)
{
books[i] = new Book();
books[i].Book(readTitle);
}
}
else
{
for (int i = 0; i < books.length; i++)
{
books[i] = new Book();
books[i].Book(readAuthor, readTitle);
}
}
return books;
}
}
我需要的结果是将书返回数组并存储。
答案 0 :(得分:2)
假设您的Book
类看起来与此类似:
class Book
{
private String title;
private String author;
public void setTitle(String title)
{
this.title = title;
}
public void setAuthor(String author)
{
this.author = author;
}
}
更有意义的是,您尝试分别实例化书籍并将它们存储在Book
对象的数组中。
public static void main(String[] args) {
Scanner kybd = new Scanner (System.in);
Book [] books = new Book [10];
// < is needed not >
for (int i = 0; i < books.length; i++)
{
// book[] is empty, it has an index of 10 with no nodes
// You need to create the instance to pass into the method
books[i] = getBook(kybd, new Book());
}
}
// This should only take the book it is working with
public static Book getBook(Scanner kybd, Book book)
{
System.out.println("What is the title of the next book?");
String readTitle = kybd.nextLine();
System.out.println("What is the title of the next book?");
String readAuthor = kybd.nextLine();
if (!readAuthor.isEmpty())
{
book.setTitle(readTitle);
}
if(!readTitle.isEmpty())
{
book.setAuthor(readAuthor);
}
return book;
}
您还有很多语法错误,而且-使用.isEmpty()
方法而不是使用=== null
。
更新:您实际上从未在循环中创建Book
的实例。另外,for (int i = 0; i > books.length; i++)
-应该是<
而不是>
。
此代码现在应该可以工作。
答案 1 :(得分:0)
好吧,您确实有一些语法错误:
首先,在您的for循环中,books[i] = getBook(kybd, Book books[])
应替换为books[i] = getBook(kybd, books)
(要将变量作为参数传递给方法,只需使用其名称即可!)
第二,在方法签名中,将public static Book[] getBook(Scanner kybd, Book books[])
替换为public static Book[] getBook(Scanner kybd, Book[] books)
(请注意,它是Book[] books
,而不是Book books[]
)。
希望这会有所帮助!
而且,正如Jaquarh所说,您缺少分号!
编辑:此外,您的方法getBooks
应该返回一本书,而不是Jaquarh指出的数组。否则,线
books[i] = getBook(kybd, Book books[])
将崩溃。
答案 2 :(得分:-1)
for (int i = 0; i > books.length; i++)
{
books[i] = getBook(kybd,books);
}
应该做到这一点,而不会引起错误
这也是无效的:
for (int i = 0; i < books.length; i++)
{
books[i] = new Book();
**books[i].Book(readTitle);**
}
}
else
{
for (int i = 0; i < books.length; i++)
{
books[i] = new Book();
**books[i].Book(readAuthor, readTitle);**
已编辑