我從一個任務創建一個商店出租這本書的問題,使用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