【发布时间】:2017-09-23 12:32:04
【问题描述】:
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
class Books {
private String title, author, publisher;
public Books(String title, String author, String publisher) {
this.title = title;
this.author = author;
this.publisher = publisher;
}
public String toString() {
return "\nTitle: " + title + "\nAuthor: " + author + "\nPublisher: " + publisher + "\n";
}
}
class Collections {
private String title, author, publisher;
Scanner sc = new Scanner(System.in);
static Map<String, Books> hashmap = new LinkedHashMap<String, Books>();
void reg() {
System.out.println(">>Please input the Title = ");
title = sc.nextLine();
System.out.println(">>Please input Author = ");
author = sc.nextLine();
System.out.println(">>Please input Publisher = ");
publisher = sc.nextLine();
hashmap.put(title, new Books(title, author, publisher));
System.out.println();
}
Set<String> set = hashmap.keySet();
void load() {
for (int i = 0; i < set.size(); i++) {
System.out.println("Book" + (i + 1) + "\n");
Iterator<String> iter = set.iterator();
Books b = hashmap.get(iter.next());
System.out.println(b.toString());
}
}
void search() {
System.out.println("Please enter title: ");
title = sc.nextLine();
Books b = hashmap.get(title);
System.out.println(b.toString());
System.out.println();
}
}
public class LibraryManage1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Collections collections = new Collections();
boolean run = true;
int select;
while (run) {
System.out.println("--------------------Library Management Program----------------------");
System.out.printf("1. Book collections\n2. Register new books\n3. Search a book\n4. Exit");
System.out.println("--------------------------------------------------------------------");
System.out.println(">>Please select menu : ");
select = sc.nextInt();
switch (select) {
case 1:
collections.load();
break;
case 2:
collections.reg();
break;
case 3:
collections.search();
break;
case 4:
System.out.println(">>Thank you for running my program!");
run = false;
break;
}
}
}
}
这是我大学作业的简单图书馆管理程序,我只能使用HashMap。 我的问题是,当我尝试加载到目前为止我输入的每一本书时,标题、作者和出版商只来自我注册的第一本书。
所以,澄清一下,例如当我进入了两本书这样的时候,
书 1 标题:一个 作者:A 发布者:A
书2 标题:乙 作者:乙 发布者:B
当我尝试加载到目前为止我输入的每一本书时,结果是这样的,
书 1 标题:一个 作者:A 发布者:A
书2 标题:一个 作者:A 发布者:A
【问题讨论】:
-
在 for 循环外分配迭代器。