si l'instruction avec des entiers
Je suis nouveau à Java. Je suis à la recherche d'un peu d'aide avec les devoirs. J'ai l'habitude de poster le code complet je faisais qu'à l'origine, mais je ne pense pas que cela va m'aider à apprendre.
J'ai un programme de travail avec les classes. J'ai une classe qui permettra de valider une sélection et une classe qui a mes setters et getters et une classe que le professeur codé avec les IO pour le programme (c'est une entrée de livre)
J'ai une déclaration en ma principale comme ce que dit
//create new scanner
Scanner ip = new Scanner(System.in);
System.out.println();
int menuNumber = Validator.getInt(ip, "Enter menu number: ", 1, 3);
if (menuNumber = 1)
{
//print address book
}
else if (menuNumber = 2)
{
//get input from user
}
else
{
Exit
}
Si vous regardez mon instruction si if (menuNumber = 1)
- je obtenir une ligne rouge qui me dit que je ne peut pas convertir un int boolean. Je pensais que la réponse était if (menuNumber.equals(1))
mais qui m'a aussi donné une erreur similaire.
Je ne suis pas 100% sur de ce que je peux faire pour régler le problème, alors je voulais vous demander de l'aide. Dois-je convertir mon entrée à une chaîne de caractères? Droit maintenant, mon validateur ressemble à quelque chose comme:
if (int < 1)
print "Error entry must be 1, 2 or 3)
else if (int > 3)
print "error entry must 1, 2, or 3)
else
print "invalid entry"
Si je convertir mon principal d'une chaîne de caractères au lieu d'un int habitude j'ai du changer les choses ainsi?
Merci encore de m'aider, je n'ai pas été diong ce grand et je veux obtenir une bonne partie de la cession assommé.
=
ayants droit valeurs à des variables. ==
tests pour l'égalité. Et ce n'est pas spécifique à Java ...Je ne comprends pas pourquoi quelqu'un a voté cette question vers le bas. Il est bien écrit et le problème est évident en le regardant. J'ai voté +1 pour le ramener à 0.
le problème est évident en regardant". Exactement. Remarque la raison numéro un pour un downvote est de l'effort de recherche. Ce n'est tout simplement pas une question qui doit être posée ici, et il ne serait pas bénéfique à toute personne, dans l'avenir, au moins, il avait ouvert un débutant en programmation livre et de lire le chapitre 1.
Je ne peux pas d'accord. C'est typique des débutants erreur et je l'ai même vu de tels bugs dans le noyau linux, une fois. En C, vous auriez même pas obtenir toute sorte d'avertissement, il serait tout simplement faire un changement et si contrairement à zéro si la clause serait vrai. Il a clairement investi très peu de temps à vous poser la question et de l'écrire bonne mise en page et facile à comprendre. Qui ne devrait pas être puni. Downvoting devraient être réservés à des "cas extrêmes" à mon humble avis
StackOverflow est plein de brillants esprits. Malheureusement, cela signifie que, parfois, ils voient ce genre de questions qui sont triviales, mais extrêmement frustrant pour un débutant...surtout cette erreur commune, comme il peut (en C-ish langues la plupart du temps) de se cacher, par la résolution de la cession à quelque chose d'acceptable. De Plus, vous avez formé la question, tagged as des devoirs, a montré de travail et n'a pas demandé les gens à le faire pour vous; ne vous en faites pas, vous obtiendrez un upvote de moi. Il y a beaucoup plus de questions stupides flottant autour. Ne laissez personne vous décourager!
OriginalL'auteur Jeremy B | 2012-02-28
Vous devez vous connecter pour publier un commentaire.
devrait être
L'ancien attribue la valeur 1 à
menuNumber
, les derniers tests simenuNumber
est égal à 1.La raison pour laquelle vous obtenez
cannot convert an int to boolean
est que Java attend une valeur booléenne dans leif(...)
construire - maismenuNumber
est unint
. L'expressionmenuNumber == 1
renvoie un booléen, qui est ce qui est nécessaire.C'est un mélange de plusieurs langues. Je pense que vous pouvez définir le compilateur Java pour vous prévenir d'autres cas de cette erreur.
Un truc utilisé dans certaines langues, est de faire la comparaison dans l'autre sens:
(1 == menuNumber)
de sorte que si vous tapez accidentellement=
, vous obtiendrez une erreur de compilation, plutôt que d'un silencieux bug.Ce qui est connu comme un Yoda Condition.
En Java, une astuce similaire peut être utilisé si vous comparez des objets à l'aide de la
.equals()
méthode (pas==
), et l'un d'eux pourrait être null:peut produire un
NullPointerException
simyString
est null. Mais:face, et il suffit de retourner
false
simyString
est null.OriginalL'auteur DNA
C'est parce que
=
est un opérateur d'affectation. Ce que vous devez utiliser est==
opérateur.Étais-je corriger à l'aide de menuNumber depuis que je l'ai déclaré plus tôt que int menuNumber = validateur.getInt ?
Vous n'êtes pas raconter
menuNumber
est égal à 1. Vous dites que je suis affectation 1 otmenuNumber
. Il y a une différence entre affectation et l'égalité dans les langages de programmation.il suffit de penser combien plus confus que vous seriez dans un langage qui sera utilement définir la variable à 1, puis de le traiter comme Vrai pour vous, sans avertissement...
aussi, vous devez utiliser le commutateur de sélection de scénarios.
OriginalL'auteur Mahesh
Un seul signe égal est d'affectation: vous assigner une valeur à une variable de cette façon. l'utilisation de deux signes égal (==) à des fins de comparaison:
Mise à jour: vous avez oublié le signe du dollar:
$menuNumber
OriginalL'auteur Hai Vu