Java - Accéder à une variable à l'intérieur et à l'extérieur de la boucle for
String playerlist;
for(Player p : allplayers){
playerlist += p.getDisplayName() + ", ";
}
sendMessage(playerlist);
Comment puis-je accomplir? J'ai besoin d'avoir une variable à l'intérieur de ma boucle for, et y accéder en dehors de la boucle.
Merci, et désolé si c'est un très nooby question. Je ne peux pas le comprendre.
- le code que vous avez posté déjà fait, de quoi avez-vous besoin?
Vous devez vous connecter pour publier un commentaire.
Vous êtes à proximité. Vous avez besoin de modifier la première ligne
En Java, il est illégal d'utiliser une variable avant de l'initialisation, et la ligne
desugars(*) à
Une fois que vous initialiser
playerlist
, vous êtes en mesure de lire son contenu dans la variable temporaire, et ensuite mettre à jourplayerlist
.Il y a deux niveau plus élevé des suggestions, même si.
EDIT: Comme @edalorzo à juste titre le mentionne dans les commentaires, vous obtenez seulement une erreur de ne pas l'initialisation d'un local variable, et à la fois statiques et les champs d'instance sont automatiquement initialisés. Plus précisément, les types numériques (
int
,long
,double
, etc.) sont initialisées à 0, les booléens sont initialisées àfalse
, et les types de référence sont initialisées ànull
.La spécification décrit explicitement l'initialisation automatique de champs, de sorte que vous pouvez compter sur elle, mais c'est rarement ce que vous voulez. Normalement, vous voulez une non-valeur par défaut du champ lorsque vous l'utilisez, plus tard, depuis
null
n'est pas très utile (et de nombreuses langues, en particulier les langages fonctionnels comme Standard ML, aller sansnull
au total). Donc je vous conseille de l'initialisation de tous les champs de vos objets dans le constructeur.(*): Le "desugaring" je montre ci-dessus est presque précis: en vérité,
playerlist
est évaluée qu'une seule fois, ce qui n'affecte pas le comportement de ce programme en particulier.Si vous initialisez votre variable en dehors de la boucle, vous pouvez obtenir:
Mais puisque vous êtes à la manipulation de Chaînes de caractères, il sera beaucoup mieux d'utiliser StringBuilder au lieu de String. La raison est la Chaîne est immuable et que vous allez créer une nouvelle Chaîne à chaque itération à l'intérieur de la boucle. Cependant StringBuilder est mutable et dispose de différents surchargé
append
méthodes à l'appui de votre opération. À l'aide de StringBuilder votre code sera comme ceci:La variable locale
playerlist
peut ne pas avoir été initialisé. En javafor
boucle déclaration des variables locales devez d'abord initialiser et utiliser ensuite dans la boucle de bloc. Vous devez les initialiserplayerlist
. Vous pouvez utiliser le code suivant:Mais il est de mieux utiliser le code suivant:
playerlist
ànull
sera la cause d'un comportement incorrect (la chaîne littérale "null" au début de la chaîne). Voir stackoverflow.com/a/693617/960195.playList
variable locale peut être vide, donc une variable de Chaîne instancié de l'onu-utile. Dans cet exemplesendMessage
méthode a pour vérifiernull
état de la valeur entrante.