Java: Pour la boucle et Si l'algorithme de

J'ai cette question à partir d'une cession à créer des magasins qui louent des livres, à l'aide d'un Store.java et Book.java. J'ai terminé cette mission, mais je suis curieux pour le meilleur algorithme pour une partie spécifique.

--

Book.java

public class Book {

    private String name;

    Book(String name)
        this.name = name;

    public String getName()
        return name;

}

Store.java

À l'intérieur de 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();

En supposant, à l'entrée = Diable.

Maintenant, j'ai besoin de faire une recherche simple pour vérifier si le livre spécifique existe.

Exemple:

 for(int i = 0; i < bookObj.length; i++) {
     if(bookObj[i].getName().equals(input))
         System.out.println("Book Found!");
 }

Apparemment, c'est une boucle qui parcourt le tableau de l'objet et vérifie si un tel Livre existe. Maintenant, le problème survient lorsque je veux donner une sortie que le Livre n'a pas été trouvé.

Exemple:

 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!");
 }

Le problème avec le code ci-dessus est que le Livre n'a pas Trouvé serait imprimé trois fois. Mon objectif est d'éviter un tel problème. J'ai des solutions, mais je suis toujours à la recherche pour une meilleure utilisation qui utilise getName(), qui à mon avis a encore place à l'amélioration.

Généralement, dans structurels de la programmation, je ferais la suite,

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!");
 }

C'est utile pour déterminer si c'est à la fin de la boucle, et la recherche est terminée, mais il n'y a pas de réussite résultat de la recherche.

Comment dois-je penser en Orienté Objet?

Tous dans tous, ma question est,

  1. Est-il une meilleure façon d'écrire le code ci-dessus plutôt que de vérifier que c'est la fin de la ligne?
  2. Est-il une meilleure façon d'utiliser la méthode getName() ou d'utiliser d'autres méthodes?
D'abord ceci: Êtes-vous autorisé à utiliser les Collections cadre au lieu des tableaux? Il y a beaucoup de place pour de l'amélioration, mais avec les devoirs que vous êtes généralement limitée à ce que vous avez en fait, appris. Et vu que c'est pas clair ...
Merci pour l'astuce, mais malheureusement, je suis attaché à utiliser un tableau d'objet pour cette mission.

OriginalL'auteur Ben C. | 2010-09-23