7
votes

Comment écrire une méthode qui traduit un booléen en "oui" ou "non"

Je suis nouveau à Java et je dois écrire une méthode qui traduit un true ou faux booléen dans une chaîne "oui" ou "non". Je suis un peu perdu.

public class Book
{
    private String title;
    private String author;
    private String isbn;
    private int pages;
    private boolean pback;
    private double price;

    /**
     * Constructor for objects of class Book
     */
    public Book(String bookTitle, String bookAuthor, String bookCode, int bookPages, boolean paperback, double bookRetail)
    {
        // initialise instance variables
        title = bookTitle;
        author = bookAuthor;
        isbn = bookCode;
        pages = bookPages;
        pback = paperback;
        price = bookRetail;
    }


public String translate(boolean trueorFalse)
            {
                if(pback = true)
                    {
                        ??????;
                    }            
                 else(pback = false)
                    {
                        ???????;
                    } 

            }


2 commentaires

Le code de votre fonction TRADUCTION () est incorrect. Vous utilisez un opérateur d'affectation dans la déclaration IF et d'autre clause au lieu de l'exploitant d'égalité. Vous n'avez pas non plus de corset de fermeture pour la définition de la classe. Petites choses, et je suis sûr que personne ne tentera de faire fonctionner ce code, mais c'est bien d'avoir des choses correctes :)


Les développeurs qui écrivent b == true ou b == false doivent être envoyés au camp d'entraînement booléen pour la rééducation.


8 Réponses :


4
votes
if(pback == true)
{
    return "yes";
} else {
    return "no";
} 
A couple of things to note:
equality is tested using ==, so you should write if ( a == b ) , not if ( a = b );
returning a value from  a method is done using the keyword return followed by the value;
else does not take a supplementary argument, unless you want to say else if which then takes an expression similar to if, e.g. else if ( a ==b ).

4 commentaires

Les tests contre TRUE / FAUX sont un peu redondants comparés à si (back) ou (pour l'inverse) si (! Back) . Je comparais très rarement contre vrai / faux. De même, j'utiliserais toujours l'opérateur conditionnel pour cette situation.


@Jon: Je suis d'accord. Mon objectif était de donner la solution la plus simple possible, car l'administrateur a indiqué qu'il commence juste avec Java.


Je dirais que l'opérateur conditionnel est la solution la plus simple possible - mais même si je présentais la version if / autre, j'avais au moins mentionné que vous n'avez pas besoin de "==" du tout.


@starblue La réponse indique ce que je crois, c'est le meilleur pour l'astucieux. La dernière pensée que je veux, c'est générer plus de confusion.



33
votes
boolean myBoolean = true;
String result = myBoolean ? "yes" : "no";

2 commentaires

Cet exemple particulier ne renvoie-t-il pas toujours "oui"? :) Ou je ne reçois pas la blague?


C'est un exemple. Myboilean est supposé être une valeur booléenne encore indéterminée, non explicitement définie comme vraie dans tous les cas.



1
votes
if (pback) {
    return "yes";
}
else {
    return "no";
}
I feel like I'm missing something.

1 commentaires

Techniquement, il vous manque un '}' :-)



25
votes

the opérateur conditionnel est votre ami :

SomeType x = someCondition ? someExpression : someOtherExpression;


2 commentaires

"L'opérateur conditionnel veille à ce que l'une des soméxpression ou une soméothéréxpression soit évaluée, vous pouvez donc utiliser les appels de méthode, etc., convaincu qu'ils ne seront pas exécutés de manière inappropriée." Il en va de même pour utiliser la construction if-else


@matt B - Exactement, c'est pourquoi ils sont interchangeables. Le fait est que c'est pas la même chose que IIF dans VB, par exemple - une préoccupation commune est que des deuxième et troisième expressions pourraient être évaluées, ce qui n'est pas en fait un problème.



-1
votes

Les conseils ci-dessus devraient faire le travail, mais je vous recommanderais d'utiliser: xxx pré>

car plus tard, vous pouvez facilement convertir ce dos: p>

public boolean translateBack(String translation)
{
    return Boolean.parseBoolean(translation);
}


0 commentaires

-5
votes
String yesNo(boolean b) {
    String[] s = {"yes", "no"};
    return b ? s[0] : s[1];
}
EDITED with correct return

2 commentaires

Le -1 n'est pas de moi, mais cela est probablement parce que vous créez inutilement une chaîne [] dans votre méthode. Vous rendez plus difficile à comprendre. Tout simplement faire retour b? "Oui": "Non"; .


ER, vous retournez une chaîne à une fonction qui a un type de retour de booléen , sans parler de la matrice de chaîne est Overkill .



0
votes

Tout d'abord, le paramètre de votre méthode de traduction n'est jamais utilisé. Vous devriez résoudre ce problème.

second, devez-vous utiliser les valeurs de chaîne "Oui" et "Non" pour les conditionnels? Si non et vous pouvez simplement utiliser la version booléenne (et je ne vois aucune raison que vous ne pouviez pas) je suggère de quitter le booléen.

Vous pouvez ensuite traduire ce booléen en "oui" ou "non" quand Il est émordé à l'aide de quelque chose comme le code suivant: xxx

Le fait est qu'il est beaucoup plus facile d'utiliser des conditionnels avec des valeurs booléennes plutôt que de tester 2 cordes d'équivalence.


0 commentaires

7
votes

Il y a un projet de groupe Apache appelé Apache Commons Lang pour travailler avec commun Java classes comme boolean code>. Son Booleanutils code> classe a quelques méthodes agréables avec: xxx pré>

dans votre exemple, vous devez travailler avec le Tostringyesno code> méthode. P>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.6</version>
</dependency>


0 commentaires