gpt4 book ai didi

java - 使用输入更改对象名称

转载 作者:行者123 更新时间:2023-11-29 06:38:35 25 4
gpt4 key购买 nike

我是 java 的初学者,我想知道是否有一种方法可以通过输入更改主类中的对象名称?例如我得到了这段代码:

while(!answer.equals("stop"))
{
//Enters book's information and stores it in the object book1
System.out.println("Book-" + count);
title = input.next();
author = input.next();
ISBN = input.next();
copies = input.nextInt();
Book book1 = new Book(title,author, ISBN, copies);
printLn("");
printLn("Do you wish stop adding books? N || stop");
answer = input.next();
}

我想继续添加新书,直到出现提示时写停止,但当然在不更改名称的情况下,它会继续将数据添加到同一对象。是否有可能或者我是否需要继续制作新书对象:Book etc = new Book(title,author,ISBN, copies)

“更正我的代码”就像凯文提到的那样,数组是存储这些值的主要想法,但由于它的静态值,它可能是完整的,但我可以使用 expandcapacity 方法来处理当输入 n-books 并且数组已满时它会在 x 中扩展数组尺寸。谢谢你!

最佳答案

代码应将每本书存储在一个列表中,以便稍后可以在代码中访问它们。名称实际上并不重要,只是它在代码中标识了您的对象。即使您可以更改局部变量 book 的名称,您的问题仍然存在。

您遇到的问题更多地与范围和对象实例有关。当您调用 new Book(..) 时,您创建了一本书的新实例。此书的实例范围仅限于 while 循环执行的代码块 {}。这意味着在循环之外无法访问 book 的实例。

为了在循环外访问 book 的实例,您可以像这样在循环外创建一本书:

Book book;

while(...){
book = new Book(...);
}

此方法的问题是您正在创建多个书籍实例,因此对于循环的每次迭代,对书籍的引用将被最新的书籍覆盖。

这就产生了容纳多本书的必要性。可能会立即想到一个数组,但是数组的大小是静态的,用户可能会输入 1..n 本书。这并不能使数组成为存储书籍的好选择。

这就是 ListArrayList 发挥作用的地方。 List 是一种包含多个对象实例的数据结构。可以使用 add(Object) 方法轻松扩展它。 List 和 ArrayList 的完整描述超出了这个答案的范围,但我提供了以下资源:http://docs.oracle.com/javase/tutorial/collections/

最终解决方案

    List<Book> books = new ArrayList<Book>();
while(!answer.equals("stop"))
{
//Enters book's information and stores it in the object book1
System.out.println("Book-" + count);

title = input.next();
author = input.next();
ISBN = input.next();
copies = input.nextInt();

Book book1 = new Book(title,author, ISBN, copies);
books.add(book1);

printLn("");
printLn("Do you wish stop adding books? N || stop");
answer = input.next();
}

//Iterating the book list outside the loop
for(Book book:books){
//this call may vary depending on the book implementation
System.out.println(book.getTitle());
}

关于java - 使用输入更改对象名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16125802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com