Большая часть этого кода уже написана, но код, который я добавил, должен включать ^ и %. Это код для вычисления выражения в правильном порядке с использованием стеков. У меня проблемы с этим, это основной метод и добавление способа ввода данных пользователем и распечатки результата проблемы. Я просто включаю эту часть кода
16 import java.util.Stack;
17 import java.util.Scanner;
18
19 public class EvaluateExpression {
20 public static void main(String[] args) {
21
22 Scanner input = new Scanner(System.in);
23 System.out.println("Enter the expression to be evaluated: ");
24 String expression = input.nextLine();
25
26 //Check number of arguments passed
27 if (args.length != 1) {
28 System.out.println("Usage: java EvaluateExpression \"expression\"");
29 System.exit(1);
30 }
31 try {
32 System.out.println(expression + " = " +
33 evaluateExpression(expression));
34 }
35 catch (Exception ex) {
36 ex.printStackTrace();
37 System.out.println("Wrong expression: " + expression);
38 }
39
40 }
Ожидаемые результаты: печатается вычисляемое выражение вместе с результатами. Но вот что я получаю, когда пытаюсь ввести случайное выражение:
Введите выражение для оценки:
6+9*8-7
Использование: java EvaluateExpression "выражение"




Это просто означает, что args.length отличается от 1.
Я так и думал, поэтому мне нужно добавить выражение в args, чтобы оно правильно его оценило? Мне трудно понять, как это сделать. Я пробовал заменить выражение на args[0], но уверен, что это неправильный способ. Извините, я все еще очень новичок в этом.
Ваша программа читает со стандартного ввода. Не нужно проверять количество аргументов. Args — это программные аргументы, которые направляют ввод вашей программы. Нравится
ls *.txt
или
java -cp . EvaluateExpression <myvalue>
Надеюсь это поможет.
Я попытался удалить эту часть программы, и если я это сделаю, она напечатает «Неправильное выражение:» + часть выражения.
Получаете ли вы выражение от сканера, как ожидалось? Вероятно, метод AssessmentExpression выдает исключение.
Если я уберу эту часть, она выдаст мне ошибку java.util.EmptyStackException и напечатает «Неправильное выражение:» + сообщение выражения.
Распечатайте выражение и оцените результат в отдельных строках. Нравится System.out.print(expression + " = "); System.out.println(evaluateExpression(expression));
И отладьте свою программу, чтобы убедиться, что она правильно читает ввод. Я предполагаю, что вы получаете исключение из метода AssessmentExpression.
Хорошо, я добавил это и удалил "ex.printStackTrace();" и теперь я получаю "Введите выражение для оценки: 6+8-4 6+8-4 = Неверное выражение: 6+8-4"
Очевидно, вы получаете исключение из метода AssessmentExpression.
Вы не передаете какие-либо параметры в свою программу через командную строку, поэтому
if (args.length != 1)возвращаетtrueи выходит из программы.