2016-10-05 3 views
0

Я пытаюсь решить проблему аббревиатуры кода, и я очень застрял. Моя цель программы заключается, чтобы взять в числах с арифметической операции перед номером и сделать это арифметическая операция, такие как:Java Модульный калькулятор

5 
+ 3 
* 7 
+ 10 
* 2 
* 3 
+ 1 
% 11 

answer: 
1 

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

import java.util.Scanner; 

public class ModularCalculator { 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     System.out.println("Enter Initial Number:"); 
     int iN = in.nextInt(); 
     int sum = 0; 

     for (int i = 0; i <= 1000000; i++) { 
      String a = in.next(); 
      int b = in.nextInt(); 

      if (a.equalsIgnoreCase("+")) { 
       System.out.println(b + iN); 
      } else if (a.equalsIgnoreCase("*")) { 
       System.out.println(b * iN); 
      } else { 
       System.out.println(b % iN); 
       sum = b + iN; 
      } 

     } 
    } 
} 
+1

Что происходит, и что вы хотите, чтобы это произошло? – Taylor

+0

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

ответ

1

Ваша проблема в том, что вы не выполняете правильную алгебру. Помните порядок операций. В вашем конкретном случае мы можем упростить его, чтобы использовать только те операции, которые у вас есть: Multiply, Modulo, Addition. Технически Modulo на самом деле не стандартизирован там, где он упорядочен, но я думаю, что большинство языков имеют Modulo так же, как Multiply/Divide, поэтому безопасная ставка заключается в том, чтобы заказать его таким образом.

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

+0

http://www.codeabbey.com/index/task_view/modular-calculator, фактически нет, это не для домашнего задания его кода и я просто пытаюсь поправиться :( – AAnwar007

+0

Хорошо, что объясняет немного. Я никогда не видел этот сайт раньше, но на первый взгляд я бы стал чистым. Как я уже сказал, у Modulo нет стандартного приоритета, поэтому, если Modulo имеет высокий приоритет, ответ должен быть 4, и если он имеет низкий приоритет, то это будет 6. Тот факт, что они говорят, что это «1», кажется мне красным флагом. – searchengine27

-1

Проблема, с которой вы столкнулись, заключалась в том, что вы были 't правильно сохранить значение из последнего вычисления. Al я просто сохранял последнее рассчитанное значение в «iN».

Scanner in = new Scanner(System.in); 
    System.out.println("Enter Initial Number:"); 
    int iN = in.nextInt(); 
    int sum = 0; 
    for (int i = 0; i <= 1000000; i++) { 
     String a = in.next(); 
     int b = in.nextInt(); 
     if (a.equalsIgnoreCase("+")) { 
      iN = b + iN; 
     } else if (a.equalsIgnoreCase("*")) { 
      iN = b * iN; 
     } else { 
      iN = b % iN; 
      sum = b + iN; 
     } 
     System.out.println(iN); 
    } 
+0

Во-первых, отформатируйте свой код. Во-вторых, это для домашнего задания, поэтому, пожалуйста, удалите любой код из своего ответа и объясните на простом английском языке. StackOverflow - это не место, где студенты колледжа/старшеклассника могут приехать и у них есть домашние задания для них. – searchengine27

+0

«iN» - это переменная, которая должна поддерживать значение из последнего вычисления. Просто добавьте эту строку, «iN = // любой расчет» и ваш код работает –

+0

Честно говоря, это не вы можете перестать быть таким? http://www.codeabbey.com/index/task_view/modular-calculator его на codeabey и im практикующий – AAnwar007

0

это не будет работать правильно! потому что вы не работаете права, например:

ответ 1 + 2 * 3 равна , но ваша программа будет возвращать как ответ

я думаю, что вы должны узнать о постфикса и префикса и как использовать стек для достижения этой цели, вот ссылка для исследования:

http://www.cs.man.ac.uk/~pjj/cs212/fix.html

+0

То же самое касается вас: пожалуйста, удалите любой код из своего ответа и объясните простым английским языком. StackOverflow не является местом, где студенты колледжа/старшеклассника могут приехать, и у людей есть домашние задания для них. – searchengine27

+0

@ searchengine27 Я не понимаю, почему вы отклонили мой ответ, вы можете отредактировать мой ответ ... ОК, я удалю код, я этого не знал! –

+0

Это не имеет никакого отношения к вашему коду ... на самом деле, я ценю, что вы хотели помочь в вопросе, разместив код - я делаю. Но в этом случае человек, задающий вопрос, пытается учиться, поэтому бросать на них стену кода им не поможет. В таких случаях, на мой взгляд, лучше объяснить им это, а затем разрешить им решить вопрос. – searchengine27

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