-4
votes

Pourquoi est-il nécessaire de mettre des guillemets doubles?

Dans la ligne de code

editText.setText(firstnum + secondnum + "");

Quelqu'un peut-il m'expliquer pourquoi il y a des guillemets doubles à la fin?


3 commentaires

Parce que setText() attend une chaîne


Si firstnum et secondnum 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.


4 Réponses :


-1
votes

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+"" .


0 commentaires

1
votes

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".


2 commentaires

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.



1
votes

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 + "");


2 commentaires

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.



0
votes

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


0 commentaires