算术java计算器[找到解决方案]
我想做一个有三个数字和两个运算符的算术计算器。我想遵循数学中的规律,相应地做/,*,+,-。答案示例,如7+3*5=22 不需要帮助算术java计算器[找到解决方案],java,Java,我想做一个有三个数字和两个运算符的算术计算器。我想遵循数学中的规律,相应地做/,*,+,-。答案示例,如7+3*5=22 不需要帮助 package first; import java.util.*; public class FirstJUnit { static double input1, input2, input3, result = 0.0; static String o1, o2; public static void main(String args[]) {
package first;
import java.util.*;
public class FirstJUnit {
static double input1, input2, input3, result = 0.0;
static String o1, o2;
public static void main(String args[]) {
Scanner calcu = new Scanner(System.in);
System.out.println("Enter your number: ");
input1 = calcu.nextDouble();
o1 = calcu.next();
input2 = calcu.nextDouble();
o2 = calcu.next();
input3 = calcu.nextDouble();
if(o2.equals("/")) {
input2 = input2/input3;
}else if(o2.equals("*")) {
input2 = input2*input3;
}else if(o2.equals("+")) {
input2 = input2+input3;
}else if(o2.equals("-")) {
input2 = input2-input3;
}
if(o1.equals("/")) {
input1 = input1/input2;
}else if(o1.equals("*")) {
input1 = input1*input2;
}else if(o1.equals("+")) {
input1 = input1+input2;
}else if(o1.equals("-")) {
input1 = input1-input2;
}
result += input1;
System.out.println(result);
}
}
您正在尝试对第一个和第二个操作使用
操作
。当您读取第二个操作时,您正在覆盖第一个操作。你也只做过一次手术,而不是两次;但显然要处理7+3*5
,您需要执行两个操作
如果要显式处理三个数字和两个操作,则需要分别存储这些操作并分别处理它们
还要注意的是,你要解决的问题需要你意识到(BODMAS或PEDMAS或类似的,取决于你在哪里上学)<代码>7+3*5要求您首先计算3*5
部分,然后计算7+x
部分,以获得正确答案。但是7*3+5
要求相反
例如,如果你只需要处理三个数字,中间有两个运算符(例如,一个聚焦范围窄的学校作业),你可能:
- 收集所有数字和运算符(可能是
、n1
、op1
、n2
和op2
)n3
- 如果
的优先级高于op2
:op1
- 计算
,保存结果(可能是n2 op2 n3
),然后执行r
n1 op1 r
- 计算
- 否则:
- 计算
,保存结果(可能是n1 op1 n2
),然后执行r
r op2 n3
- 计算
- 显示最终结果
…但详细信息将取决于分配的详细信息。您完全未能实施(a)涉及第三个数字的任何评估
n3
,(b)保存和使用第二个运算符,最重要的是(c)运算符优先级。您需要抛开这一切,查找Dijkstra调车场算法或“递归下降表达式解析”。您的实现不正确,因为您使用了相同的变量来保存输入
Scanner op = new Scanner(System.in);
System.out.println("Enter your operation");
operation = op.next(); // <-- This value is never use, see below
System.out.println("Enter second number");
n2 = scannerObject. nextInt();
Scanner op1 = new Scanner(System.in);
System.out.println("Enter your operation");
operation = op1.next(); // <-- You save this value in same variable operation, the previous value is overwritten
System.out.println("Enter third number");
n3 = scannerObject. nextInt(); // <-- This number is never use after in your code
Scanner op=新扫描仪(System.in);
System.out.println(“输入您的操作”);
operation=op.next();//到目前为止,解决这个问题的最好方法是使用IDE中内置的调试器进行调试;更多信息:使用调试器不是一项高级技能;这是任何初学者都应该首先学习的东西之一,然后作为第一个学习的东西。你正在阅读三个数字和两个运算符,但是你覆盖了你阅读的第一个运算符,并且在计算中忽略了n3。因此,对于7+3*5
计算7*3
。你必须重新考虑你的逻辑。你正在覆盖你的运算变量,所以只有*被取,给你7*3=21。就像建议的那样,逐行调试代码,一些重写是必要的;您的讲师、教程或课程将涵盖必要的主题,使您能够做到这一点。复习你的课程材料、课堂笔记等。那里会有适用的信息。提示:只使用一个扫描仪
,无需创建更多,因为从同一输入流读取