J'ai cette variable int dans la classe StringSplit dont la valeur je dois passer à une autre classe appelée EndStatement à imprimer; Je ne peux pas vraiment le passer en paramètre si je pense. Comment puis-je obtenir la meilleure variable là où j'en ai besoin? Quelqu'un peut-il aider avec un indice? J'ai lu les tutoriels Java mais je ne les ai pas vraiment compris. Les variables et leur transmission semblent être l'un de mes talons d'Achille dans la programmation Java.Java passant des variables de la méthode dans une classe dans une classe différente
EDITER POUR AJOUTER: parseCommands
peut appeler plusieurs classes d'instructions différentes, par ex. EndStatement ou PrintlnStatement en fonction du premier élément d'un tableau analysé à partir d'une chaîne qui sert de mot-clé à une HashMap appelée commandHash. Les classes Statement implémentent l'interface de la directive qui n'a qu'une méthode appelée execute
avec le paramètre String[] parts
. (EndStatement implements Directive
). Élargissement de la méthode parseCommands
pour montrer ce qui se passe.
public class StringSplit
{
public void parseCommands(String fileName)
{
//FileReader and BufferedReader to read a file with the code
//to execute line by line into an ArrayList myString
int lineCounter=0; //need to get this variable's value into class EndStatement
for (String listString: myString)
{
lineCounter++;
String[] parts=listString.trim.split("[\\s]+", 2)//split String into 2 parts
//to get commands
Directive directive= commandHash.get(parts[0])//parts[0] is the hashmap keyword
}
public class EndStatement implements Directive
{
public void execute(String[] parts)
{
//need to get lineCounter here--how?
System.out.print(lineCounter +"lines processed.");
}
public static void main (String[]args)
StringSplit ss = new StringSplit();
ss.parseCommands(args[0]);
}
Il n'est pas clair du tout ce que vous voulez réaliser. Qui/que voulez-vous passer 'lineCounter', et où? – Mat
Vous n'appelez jamais 'EndStatement.execute' - ce qui rend très difficile de dire ce que vous essayez de faire. * Pourquoi * ne pouvez-vous pas utiliser un paramètre? –
@Jon Skeet parce que je surcharge l'interface de la directive, qui n'a pas la variable 'lineCounter' en paramètre. La classe 'EndStatement' est l'une des nombreuses classes qui pourraient être appelées par la méthode' parseCommands'. @Mat J'essaie de rendre 'lineCounter' accessible aux classes en dehors de la classe' StringSplit' dans laquelle il est, comme la classe 'EndStatement' ci-dessus. Désolé pour la confusion. – Luinithil