[英]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作為答案
我認為您必須了解后綴和前綴以及如何使用堆棧來實現此目標,這是一個學習鏈接:
您遇到的問題是您沒有正確存儲上一次計算的值。 我所做的只是將最后的計算值存儲在“ 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.