2016-09-25 2 views
-1

Я пытаюсь написать программу, которая примет выражение и решит его. Например, если мне дали 5 * 5 + 2/2 - 8 + 5 * 5 - 2, я должен прийти к ответу 41, используя ArrayLists. Для этого мне нужно преобразовать операцию, указанную в int. Есть ли способ конвертировать целую заданную строку или int в операцию? Я попытался использовать Integer.parseInt (givenString), но я получил ошибку из-за знаков «+», «-», «*», «/».Решающие операции

Кроме того, я попытался следующие, но я получаю ту же ошибку, из-за признаков

Scanner kb = new Scanner(System.in); 

    int k=0; 

    while (k!=-1) 
    { 
    System.out.println ("Please enter an operation to solve or enter -1 to stop"); 
    k= kb.nextInt(); 
    System.out.println(k); 
    k=0; 

    } 
+0

'System.out.println (новый ScriptEngineManager(). GetEngineByName (" js "). Eval (" 5 * 5 + 2/2 - 8 + 5 * 5 - 2 "));' –

ответ

0

Просто попробуйте,

try { 
      System.out.println(new ScriptEngineManager().getEngineByName("js").eval("5 * 5 + 2/2 - 8 + 5 * 5 - 2")); 
     } catch (ScriptException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

Я думаю, что это побеждает цель назначения ОП. –

0

Я буду стараться, чтобы дать вам старт без написания кода, потому что я хочу избежать вашей домашней работы для вас.

Вам нужно будет пройти через строку ввода по одному символу за раз и решить, является ли каждый символ числом (или частью числа) или операцией (+-*/). Список вы должны стремиться, чтобы сформировать для вашей проблемы должны выглядеть примерно так:

["5", "*", "5", "+", "2", "/", "2", "-", "8", "+", "5", "*", "5", "-", "2"]

Оттуда, управлять списком, как вам нужно, чтобы решить эту проблему.

Смежные вопросы