Comme d'autres l'ont dit, ce site n'est pas une école pour apprendre les rudiments de la langue. Mais tôt ou tard les gens viendront probablement ici à la recherche d'une réponse à votre question exacte.
Vous avez un énorme malentendu sur le fonctionnement de Java. Dans votre code, vous faites deux erreurs. D'abord, vous essayez d'accéder à une variable qui serait déjà partie, si vous pouviez l'atteindre. Et en second lieu, vous essayez d'accéder à une variable que vous ne pouvez pas "voir" d'où vous appelez. Votre code:
public static void main(String[] args) {
operators.getMonthNumber("January");
System.out.println(monthNumber);
}
Plus d'informations sur le premier problème: Vous déclarez la monthNumber variable dans votre méthode getMonthNumber. Donc, il n'existe que pour la durée de la méthode. Donc, lorsque vous appelez la méthode, la variable est là. Après la méthode, la variable est partie. Il est jeté. Mais une copie de la valeur de la variable est retournée dans votre méthode. Vous pouvez donc prendre la copie et la placer dans une nouvelle variable et l'utiliser ou l'utiliser directement. C'est ce que vous avez indiqué avec
int retournéMonthNumber = opérateurs.getMonthNumber ("Janvier");
Il n'y a pas de langage de programmation que je connaisse qui fonctionne comme vous le souhaitez.Et s'il y en avait un, ce ne serait pas vraiment populaire car cela pourrait causer beaucoup de bugs car une faute de frappe pourrait conduire au programme en utilisant une variable complètement différente que vous ne vouliez pas utiliser.
Plus d'informations sur le deuxième problème: De manière générale, les variables ne sont accessibles qu'entre parenthèses. Cela signifie que les variables déclarées dans {} ne sont accessibles que dans les mêmes parenthèses, ou entre crochets. Exemple:
public static void main(String[] args) { // first bracket
final int dollar = 2;
System.out.println("i can access dollar: " + dollar);
{
final int euro = 33;
System.out.println("I can access dollar: " + dollar + ", and i can access euro: " + euro);
}
// you have to remove +euro to compile this:
System.out.println("But i cant access euro because i am outside the brackets where euro is declared: " + euro);
}
Gardez cette règle à l'esprit car elle fonctionne toujours. Cela fonctionne avec les méthodes, avec ifs, avec while/for/do while etc. Si le compilateur ne peut pas voir une variable, c'est probablement une faute de frappe ou un mauvais bloc.
J'ai vu beaucoup de débutants dire quelque chose comme vous l'avez dit. Ils se demandent "pourquoi le compilateur ne sait-il pas ce que je veux, c'est évident!". Mais ce n'est pas évident. Le comportement que vous attendez est seulement "utile" dans votre tête. Cela pourrait vous sauver une demi-ligne de code. Mais dans un exemple plus avancé, vous verrez que ce serait une très mauvaise idée de l'implémenter comme vous l'attendez. Et chaque débutant s'en rend compte à un certain moment: Si vous vous demandez pourquoi le compilateur ne fera pas quelque chose que vous voulez, alors vous ne lui avez pas dit de faire ce que vous voulez qu'il fasse. Si tu vois ce que je veux dire.
Votre code ne compile même pas. S'il vous plaît lire [mcve]. En ce sens: s'il vous plaît comprendre que ce site n'est pas l'école de programmation si nous expliquons les bases absolues et corriger vos erreurs de syntaxe pour vous. – GhostCat