Dans la ligne de code
editText.setText(firstnum + secondnum + "");
Quelqu'un peut-il m'expliquer pourquoi il y a des guillemets doubles à la fin?
4 Réponses :
setText veut une chaîne. si vous voulez obtenir une chaîne à partir d'un String.valueOf(i)
vous pouvez utiliser String.valueOf(i)
ou i+""
.
firstnum et secondnum sont tous les deux de type Float, il semble donc que les ajouter entraînera un Float, la méthode setText () prend une String pas un Float, lorsque l'ajout de + "" java convertira automatiquement l'ajout des 2 Floats en une chaîne, pensez si vous aviez:
editText.setText(5 + " apples");
Ensuite, java pensera que vous voulez avoir une chaîne "5 pommes", c'est pourquoi il convertit le entier avant la chaîne en une représentation sous forme de chaîne puis l'ajoute à "pommes".
setText
acceptera les nombres entiers, mais a une signification différente dans l'API
@ cricket_007 Oui, une signature du setText prend un in mais il n'y en a pas un qui prend un float, vous ne pouvez pas passer un float à une méthode qui attend un int.
C'est pour forcer la conversion de votre valeur entière (résultat de firstnum + secondnum
) en chaîne, ce que setText()
requiert comme argument. Il y a aussi setText()
qui accepte int
(vous utilisez des floats donc ce n'est pas le cas de toute façon) mais cet int sera utilisé comme ID de la ressource string qui n'est pas ce que vous voulez, d'où le besoin de conversion en string. C'est aussi juste moins de frappe. C'est fondamentalement équivalent à remplacer:
editText.setText(String.valueOf(firstnum + secondnum));
avec:
editText.setText(firstnum + secondnum + "");
D'un autre côté, le deuxième exemple montre beaucoup plus clairement ce qui se passe. S'il avait été rédigé de la deuxième façon, le PO n'aurait jamais eu à poser sa question, car cela aurait été clairement évident. Parfois, «moins de frappe» est une fausse économie.
Bien sûr, il y a toujours un échange, c'est-à-dire Dans ce cas particulier, je mettrais simplement "" + ...
premier pour que ce qui se passe soit plus clair.
Le + est un opérateur surchargé quand c'est entre deux nombres qu'il les ajoutera mais l'ajout du "" le fera dans une chaîne
Parce que
setText()
attend une chaîneSi
firstnum
etsecondnum
sont des flottants, alors(firstnum + secondnum)
est un float. Mais(firstnum + secondnum + "")
est une chaîne. La méthode que vous appelez attend une chaîne.@ B001 ᛦ - non.
setText()
accepte également les entiers. mais même si OP utilisait des ints au lieu de floats, c'est toujours ce dont il a besoin.