Problème d'affichage par défault

Résolu/Fermé
thermos111 Messages postés 20 Date d'inscription dimanche 30 octobre 2016 Statut Membre Dernière intervention 12 février 2017 - Modifié par crapoulou le 11/11/2016 à 22:19
thermos111 Messages postés 20 Date d'inscription dimanche 30 octobre 2016 Statut Membre Dernière intervention 12 février 2017 - 11 nov. 2016 à 23:18
Bonjour,
Je réalise une mini application de livre en POO java ou je veut afficher le titre plus l'auteur.
Mon problème est que je met à mon attribut auhtor = "Anon" par defaut, si je ne tape rien quand il me pose la question "What is the name of the author?" il ne m'affiche pas Anon alors que je veut qui l'affiche, j'ai tout éssayé mais je n'arrive à rien, je vous met le code pour que vous voyez ce que je veut faire
Book.java
public class Book {
    
    private String title;
    private String author;
    
    public Book(String title)
    {
       
        this.author = "Anon";
        
       
    }
    
    public Book(String titleOfBook, String authorOfBook)
    {
        this.title = titleOfBook;
        this.author = authorOfBook;
    }

 public String getTitle() {
  return title;
 }

 public String getAuthor() {
  return author;
 }
 
}


BookShopApplication
import java.util.*;
public class BookShopApplication {
    
    public static void main(String[] args)
    {
        Scanner kybd = new Scanner(System.in);
        Book[] livre = new Book[2];
        
        int i;
        
        for(i = 0; i < livre.length; i++)
        {
            livre[i] = getBook(kybd);
        }
        
        printBookDetails(livre);
    }
    
    public static Book getBook(Scanner kybd)
    {
        Book l;
        System.out.printf("What is the title of the next book? > ");
        String title = kybd.nextLine();
        System.out.printf("What is the name of the author? > ");
        String author = kybd.nextLine();
        
        if(author == "" )
        {
            l = new Book(title);
            
            
        }
        
        else
        {
            l = new Book(title, author);
            
        }
        
        return l;
    }
    
    public static void printBookDetails(Book[] books)
    {
        System.out.println("Book list");
        System.out.println("Title          Author");
        System.out.println("=======       ========");
        
        for(int i = 0; i < books.length; i++)
        {
            System.out.println(books[i].getTitle() + "               " + books[i].getAuthor());
        }
    }
    
}


Merci de votre aide

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
11 nov. 2016 à 23:08
Bonjour,

if(author == "" )
est faux car il ne faut jamais comparer deux objets avec
==
qui fait une comparaison des références d'objets, pas de leur valeur, ça c'est le rôle de la méthode equals :
if(author.equals(""))
que l'on pourra aussi écrire
if(author.isEmpty())
pour simplifier.
0
thermos111 Messages postés 20 Date d'inscription dimanche 30 octobre 2016 Statut Membre Dernière intervention 12 février 2017
11 nov. 2016 à 23:18
ok merci
0