簡體   English   中英

Java模塊化計算器

[英]Java Modular calculator

我正在嘗試一個代碼修道院問題,但我很困。 我的程序目標是在數字前加一個數學運算符,然后執行該數學運算符,例如:

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

        }
    }
}

你的問題是你沒有做適當的代數。 記住操作順序。 在您的特定情況下,我們可以將其簡化為僅使用您所擁有的操作: Multiply, Modulo, Addition 從技術上講,Modulo在訂購位置上並沒有真正標准化,但是我認為大多數語言都將Modulo與Multiply / Divide相同,因此,最好以這種方式訂購。

因為這顯然是用於家庭作業,所以我不會為您修復代碼。 我會告訴你,那絕對是你的問題。 考慮一下如何解決這個問題...提示提示...一次不要讀取令牌...嘗試讀取更多內容...

這將無法正常工作! 因為您的工作不正確,例如:

1 + 2 * 3的答案等於7,但是您的程序將返回9作為答案

我認為您必須了解后綴和前綴以及如何使用堆棧來實現此目標,這是一個學習鏈接:

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

您遇到的問題是您沒有正確存儲上一次計算的值。 我所做的只是將最后的計算值存儲在“ 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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM