J'ai un programme qui est censé prendre des entrées de la ligne de commande et les diriger vers l'entrée standard et diriger la sortie vers sortie standard. Le code censé être entré dans la ligne de commande est censé se présenter comme suit:Exécution du programme Java via l'invite de commande avec les fichiers d'entrée et de sortie
java package.sub.Calc < input-file > output-file
ou
echo some inputs to the calculator | java
package.sub.Calc
Mais je ne peux pas sembler le faire fonctionner correctement. L'objectif est d'être en mesure de passer un fichier texte dans le programme ou écrire vos problèmes de mathématiques là, sur la ligne de commande et la conduite dans.
Le programme fonctionne correctement pour
java -cp . package.sub.Calc
et ayant la type d'utilisateur dans leur problème et en appuyant sur Entrée.
Si j'ai un fichier nommé input.txt
et que vous voulez l'appeler à partir de la ligne de commande et que les réponses soient imprimées dans la ligne de commande (le programme est conçu pour System.out.println
) comment entrerais-je cette information? Mon code actuel implémente un Scanner
pour System.in
. Devrais-je utiliser autre chose pour que cela fonctionne? Je suis nouveau à courir n'importe quoi dans l'invite de commande et ne peux pas sembler l'obtenir pour fonctionner.
Toute aide est grandement appréciée.
Mon code:
public static void main(String[] args) {
Calc calc = new Calc();
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
String input = "";
List<String> strs = new ArrayList<>();
ArrayList<String> tokens;
while (sc.hasNextLine()) {
String line = sc.nextLine().trim();
if (line.isEmpty()) {
for (String s : strs) {
sb.append(s);
input = sb.toString();
}
tokens = new ArrayList<>(Arrays.asList(input.split(" ")));
//call calculate and reset
calc.calculate(tokens);
strs.clear();
tokens.clear();
sb.setLength(0);
input = "";
} else if (line.length() == 1) {
strs.add(" ");
strs.add(line);
strs.add(" ");
//manual user exit case
} else if (line.equals("EXIT")){
System.exit(0);
}else {
strs.add(line);
}
}
}
Que diriez-vous juste de prendre le nom de fichier comme 'String' dans la ligne de commande, puis en utilisant cette chaîne en Java pour ouvrir le fichier? jetez un oeil à cet exemple http://www.mkyong.com/java/how-to-read-file-from-java-bufferedreader-example/ – jmcg
Veuillez fournir le code que vous avez déjà. Ce que vous décrivez devrait fonctionner correctement, donc s'il y a un problème, il existe probablement sur votre implémentation. – Tim
@Tim a ajouté ma méthode principale. Je ne suis pas sûr si le problème est mon code ou ce qui im entrant dans la ligne de commande. Comment est-ce que je passerais dans input.txt par exemple? – Alkarin