Java 如何将一个对象数组从一个方法转移到另一个方法并返回一个新对象?
我需要使用main方法中的数组并将其转移到getBook方法,然后将新创建的对象返回到main方法中的数组 我决定将数组转移到下一个方法,方法与扫描器相同,直到出现错误时需要调用该方法Java 如何将一个对象数组从一个方法转移到另一个方法并返回一个新对象?,java,arrays,methods,Java,Arrays,Methods,我需要使用main方法中的数组并将其转移到getBook方法,然后将新创建的对象返回到main方法中的数组 我决定将数组转移到下一个方法,方法与扫描器相同,直到出现错误时需要调用该方法 public class BookShopApplication { public static void main(String[] args) { Scanner kybd = new Scanner (System.in); Book [] books
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;
}
}
我需要的结果是将书籍返回到数组并存储
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);**
编辑了嗯,您确实有一些语法错误: 首先,在for循环中,books[i]=getBookkybd,Book books[]应替换为books[i]=getBookkybd,books要将变量作为参数传递给方法,只需使用其名称 第二,在方法签名中,将public static Book[]getBookScanner kybd,Book books[]替换为public static Book[]getBookScanner kybd,Book[]books 注意,这是书,不是书 希望这有帮助 另外,正如Jaquarh所评论的,您缺少了一个分号 编辑:此外,正如Jaquarh所指出的,getBooks方法应该返回一本书,而不是一个数组。否则,该行 books[i]=getBookkybd,Book books[]将崩溃。假设您的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;
}
}
更有意义的是,您尝试单独实例化这些书籍,并将它们存储在书籍对象数组中
您还有很多语法错误-请使用.isEmpty方法,而不是使用===null
更新:您从未在循环中实际创建Book的实例。同样,对于int i=0;书的长度;i++-应该是
这段代码现在应该可以工作了。您的错误是什么?@Jaquarh第14行不是语句public static Book[]getBookScanner kybd,Book[]books-books是变量,Book[]是数据类型。你也错过了一个机会;调用该方法后-出现语法错误,错误为:。应为类;应为,找不到符号,意外类型由于getBook是一个方法,因此需要以;这不会编译,因为书籍[]作为参考无效;它仍然存在不兼容类型的错误Book[]无法转换为Book感谢您的回答:,我已经编辑了代码,但是现在我收到一个错误,不兼容类型Book[]无法转换为BookBook@ShaneJones您在哪一行收到此信息?从getBook返回一本书[]在第11行,您正在检查一本书,因为在第7行,您声明>Book[]books=新书[10];第14行,books[i]=getBookkybd,books@ShaneJones哦,好吧,你的方法getBooks返回一个书籍数组,而不仅仅是一本书!谢谢:现在都在工作,不用担心,希望有帮助
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;
}