【发布时间】:2023-04-02 06:33:01
【问题描述】:
我写了一个类
Book(String title, String author)
然后我有另一个类 Register,包含一个包含所有书籍的数组列表。
我现在正在编写一种方法,我希望能够通过搜索作者找到一本书,但这里的困难在于这种搜索方法能够找到这本书而无需输入整个标题.怎么样?
这是我写的全部内容:
public class Book {
private String title; // titel
private String author; // författare
/** Skapar en bok med författaren author och titeln title */
public Book(String author, String title) {
this.author = author;
this.title = title;
}
/** Returnerar namnet på författaren */
public String getAuthor() {
return author;
}
/** Returnerar titeln */
public String getTitle() {
return title;
}
/** Returnerar en sträng som består av bokens författare och titel */
public String toString() {
return author + "\t" + title;
}
}
.
import javax.swing.*;
public class Dialog {
/** Skapar ett Dialog-objekt fšr hantering av popup-dialogrutor. */
public Dialog() {
}
/** Visar en dialogruta med hjŠlptexten s dŠr anvŠndaren skall mata in ett
* heltal som returneras.
* Om anvŠndaren anger ett felaktigt vŠrde eller klickar pŒ "avbryt" sŒ
* returneras Integer.MAX_VALUE.
*/
public int readInt(String s) {
String in = JOptionPane.showInputDialog(s);
try {
int i = Integer.parseInt(in);
return i;
} catch (NumberFormatException e) {
return Integer.MAX_VALUE;
}
}
/** Visar en dialogruta med hjŠlptexten s dŠr anvŠndaren skall mata in en
* teckenstrŠng som returneras.
* Om anvŠndaren klickar pŒ "avbryt" sŒ returneras null.
*/
public String readString(String s) {
String in = JOptionPane.showInputDialog(s);
if (in == null) {
return null;
} else {
return in.trim();
}
}
/** Visar en dialogruta med textstrŠngen s. */
public void printString(String s) {
JOptionPane.showMessageDialog(null, s, "",JOptionPane.PLAIN_MESSAGE);
}
}
.
import java.util.ArrayList;
public class Register {
private ArrayList<Book> reg; // registret skall lagras i en ArrayList
/** Skapar ett tomt register*/
public Register(){
reg = new ArrayList<Book>();
}
/**Sätter in boken bok sist i Registret reg*/
public void addBook(Book bok) {
reg.add(bok);
}
/**Tar bort alla böcker av en viss författare author*/
public void removeAuthor(String author1) {
for(int i = 0; i<reg.size(); i++){
if(reg.get(i).getAuthor().equals(author1)){
reg.remove(i);
}
}
}
/**Söka upp alla böcker som gäller för en viss författare.
Det skall räcka att man anger en del av författarnamnet.
Samtliga böcker vars författare passar in skall presenteras med både författare och titel. */
public Book searchBook(String Author2){
ArrayList<Book> kopia = new ArrayList <Book>();
for(int i = 0; i<reg.size();i++){
for(String string : )
}
}
//... Konstruktor och alla metoderna för registerhanteringen
/** Läser registret från filen med namn fileName. */
public void readFromFile(String fileName) {
//... Se ledning för filhanteringen sist i uppgiften
}
/** Sparar registret på fil med namnet fileName. */
public void writeToFile(String fileName) {
//... Se ledning för filhanteringen sist i uppgiften
}
}
【问题讨论】:
-
如何进行正则表达式搜索并根据您可能拥有的任何条件进行模式匹配?
-
您需要提供更详细的信息 - 您想在字符串的任何部分中查找字符串,还是仅在开头?您可以使用正则表达式来执行此操作,但或者,您可以查看字符串匹配算法(Boyer-Moore 或 Knuth-Pratt)之类的东西。
标签: java string search arraylist