Java模块化计算器

时间:2016-10-05 18:09:44

标签: 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;
            }

        }
    }
}

3 个答案:

答案 0 :(得分:1)

你的问题是你没有做正确的代数。记住操作的顺序。在您的特定情况下,我们可以将其简化为仅使用您拥有的操作,即:Multiply, Modulo, Addition。从技术上讲,Modulo在订购的地方并没有真正标准化,但我认为大多数语言都将Modulo与Multiply / Divide相同,所以可以肯定的是以这种方式订购。

由于这是明确的家庭作业,我不会为你修复你的代码。我会告诉你,这绝对是你的问题。想想你将如何解决这个问题......暗示提示......不要一次读取令牌......尝试阅读更多内容......

答案 1 :(得分:0)

这将无法正常工作!因为你工作不对,例如:

1 + 2 * 3 的答案等于 7 但是你的程序将返回 9 作为答案

我认为你必须了解postfix和前缀以及如何使用stack来实现这个目标,这里有一个研究链接:

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

答案 2 :(得分:-1)

您遇到的问题是您没有正确存储上次计算的值。我所做的只是将最后计算的值存储在&#34; iN&#34;中。

    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);
    }