我从一个任务创建一个商店出租这本书的问题,使用Store.java和Book.java。我完成了这个任务,但我很好奇为特定部分提供更好的算法。Java:For循环和如果算法
-
Book.java
public class Book {
private String name;
Book(String name)
this.name = name;
public String getName()
return name;
}
Store.java
在main();
Book bookObj[] = new Book[3]; //Create 3 Array of Object.
bookObj[0] = new Book("Game Over");
bookObj[1] = new Book("Shrek");
bookObj[2] = new Book("Ghost");
Scanner console = new Scanner(System.in)
input = console.nextLine();
假设,input = Devil。
现在,我需要做一个简单的搜索来检查特定的书是否存在。
实施例:
for(int i = 0; i < bookObj.length; i++) {
if(bookObj[i].getName().equals(input))
System.out.println("Book Found!");
}
显然,这是一个for循环,通过对象和检查阵列周期是否这样预订存在。现在,当我想给出一个没有找到该书的输出时,就会出现问题。
实施例:
for(int i = 0; i < bookObj.length; i++) {
if(bookObj[i].getName().equals(input))
System.out.println("Book Found!");
else
System.out.println("Book not Found!");
}
与上面的代码的问题是,不预订实测值将被打印三次。我的目标是避免这样的问题。我确实有解决方案,但我仍然在寻找一个更好的使用getName()的方法,这在我看来仍然有改进的空间。
通常情况下,在结构化编程,我会做以下,
for(int i = 0; i < bookObj.length; i++) {
if(bookObj[i].getName().equals(input))
System.out.println("Book Found!");
else if(i == bookObj.length - 1)
System.out.println("Book not Found!");
}
这有助于弄清楚究竟是一个循环的结束,并在搜索结束,但没有成功的结果从搜索。
我应该如何以面向对象的方式来思考它?
所有的一切,我的问题是,
- 有没有更好的方式来写上面的代码,而不是检查,它是该行的结束?
- 有没有更好的方法来利用getName()方法或使用其他方法?
首先这个问题:你允许使用[Collections框架](http://download.oracle.com/javase/tutorial/collections/index.html)而不是数组吗?有很大的改进空间,但是功课通常只限于你实际学到的东西。而且,因为这还不清楚...... – BalusC 2010-09-23 14:40:24
谢谢你的提示,但不幸的是,我被绑定到使用一个对象的数组这个任务。 – 2010-09-23 14:55:03