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)
{
???????;
}
}
8 Réponses :
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 ).
Les tests contre TRUE / FAUX sont un peu redondants comparés à si (back) code> ou (pour l'inverse) si (! Back) code>. 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 i> 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.
boolean myBoolean = true; String result = myBoolean ? "yes" : "no";
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.
if (pback) {
return "yes";
}
else {
return "no";
}
I feel like I'm missing something.
Techniquement, il vous manque un '}' :-)
the opérateur conditionnel est votre ami :
SomeType x = someCondition ? someExpression : someOtherExpression;
"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 i> la même chose que IIF dans VB, par exemple - une préoccupation commune est que i> des deuxième et troisième expressions pourraient être évaluées, ce qui n'est pas en fait un problème.
Les conseils ci-dessus devraient faire le travail, mais je vous recommanderais d'utiliser: car plus tard, vous pouvez facilement convertir ce dos: p> public boolean translateBack(String translation)
{
return Boolean.parseBoolean(translation);
}
String yesNo(boolean b) {
String[] s = {"yes", "no"};
return b ? s[0] : s[1];
}
EDITED with correct return
Le -1 n'est pas de moi, mais cela est probablement parce que vous créez inutilement une chaîne [] code> dans votre méthode. Vous rendez plus difficile à comprendre. Tout simplement faire retour b? "Oui": "Non"; code>.
ER, vous retournez une chaîne code> à une fonction qui a un type de retour de booléen code>, sans parler de la matrice de chaîne est Overkill i>.
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. P>
Vous pouvez ensuite traduire ce booléen en "oui" ou "non" quand Il est émordé à l'aide de quelque chose comme le code suivant: p> 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. P > p>
Il y a un projet de groupe Apache appelé Apache Commons Lang pour travailler avec commun Java classes comme dans votre exemple, vous devez travailler avec le boolean code>. Son Booleanutils code> classe a quelques méthodes agréables avec: Tostringyesno code> méthode. P> <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
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.