Оценка проблемы программы Expression с вводом данных пользователем

Большая часть этого кода уже написана, но код, который я добавил, должен включать ^ и %. Это код для вычисления выражения в правильном порядке с использованием стеков. У меня проблемы с этим, это основной метод и добавление способа ввода данных пользователем и распечатки результата проблемы. Я просто включаю эту часть кода

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 "выражение"

Вы не передаете какие-либо параметры в свою программу через командную строку, поэтому if (args.length != 1) возвращает true и выходит из программы.

GriffeyDog 18.02.2019 21:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
146
2

Ответы 2

Это просто означает, что args.length отличается от 1.

Я так и думал, поэтому мне нужно добавить выражение в args, чтобы оно правильно его оценило? Мне трудно понять, как это сделать. Я пробовал заменить выражение на args[0], но уверен, что это неправильный способ. Извините, я все еще очень новичок в этом.

Britney 18.02.2019 21:44

Ваша программа читает со стандартного ввода. Не нужно проверять количество аргументов. Args — это программные аргументы, которые направляют ввод вашей программы. Нравится ls *.txt или java -cp . EvaluateExpression <myvalue>

Надеюсь это поможет.

Я попытался удалить эту часть программы, и если я это сделаю, она напечатает «Неправильное выражение:» + часть выражения.

Britney 18.02.2019 21:46

Получаете ли вы выражение от сканера, как ожидалось? Вероятно, метод AssessmentExpression выдает исключение.

serdroid 18.02.2019 21:53

Если я уберу эту часть, она выдаст мне ошибку java.util.EmptyStackException и напечатает «Неправильное выражение:» + сообщение выражения.

Britney 18.02.2019 21:57

Распечатайте выражение и оцените результат в отдельных строках. Нравится System.out.print(expression + " = "); System.out.println(evaluateExpression(expression));

serdroid 18.02.2019 22:04

И отладьте свою программу, чтобы убедиться, что она правильно читает ввод. Я предполагаю, что вы получаете исключение из метода AssessmentExpression.

serdroid 18.02.2019 22:08

Хорошо, я добавил это и удалил "ex.printStackTrace();" и теперь я получаю "Введите выражение для оценки: 6+8-4 6+8-4 = Неверное выражение: 6+8-4"

Britney 18.02.2019 22:09

Очевидно, вы получаете исключение из метода AssessmentExpression.

serdroid 19.02.2019 11:02

Другие вопросы по теме