我正在尝试构建一个简单的计算器,该计算器对Double值进行操作并执行:
+
-
*
/
否定
^ 2
由于某种原因,无论我在运行程序时指定哪个操作都执行添加功能。所以当我尝试做的时候
5 7 *
我得到12.0而不是35。
有什么建议吗?
当输入“exit”一词时,我也非常想帮助实现一种退出该程序的方法。我在想像System.exit(0);
但我不确定如何实施。到目前为止,这是我的代码:
import java.util.Scanner;
public class Calc {
public static void main(String[] args)
{
double num1;
double num2;
String operation;
Scanner input = new Scanner(System.in);
System.out.println ("Enter 'exit' to quit the calculator or 'help' for more options");
System.out.println("Enter the first number:");
num1 = input.nextInt();
System.out.println ("Display:" + num1);
System.out.println("Enter the second number:");
num2 = input.nextInt();
System.out.println ("Display:" + num2);
Scanner op = new Scanner(System.in);
System.out.println("Please enter operation:");
operation = op.next();
if (operation == "+");
{
System.out.println((num1 + num2));
}
if (operation == "-"){
{
System.out.println((num1 - num2));
}
if (operation == "/"){
{
System.out.println((num1 / num2));
}
if (operation == "*"){
{
System.out.println((num1 * num2));
}
}
}
答案 0 :(得分:5)
if (operation.equals("+"));
处有一个分号
所以,System.out.println((num1 + num2));
将始终有效
并将==
替换为.equals("+")
因为==
检查引用,而equals检查变量的值。
答案 1 :(得分:0)
试试这种方式
而不是使用==
使用.equals()
import java.util.Scanner;
public class Calc {
public static void main(String[] args)
{
double num1;
double num2;
String operation;
Scanner input = new Scanner(System.in);
System.out.println ("Enter 'exit' to quit the calculator or 'help' for more options");
System.out.println("Enter the first number:");
num1 = input.nextInt();
System.out.println ("Display:" + num1);
System.out.println("Enter the second number:");
num2 = input.nextInt();
System.out.println ("Display:" + num2);
Scanner op = new Scanner(System.in);
System.out.println("Please enter operation:");
operation = op.next();
if (operation.equals("+"))
{
System.out.println((num1 + num2));
}
if (operation.equals("-"))
{
System.out.println((num1 - num2));
}
if (operation.equals("/")){
{
System.out.println((num1 / num2));
}
if (operation.equals( "*")){
{
System.out.println((num1 * num2));
}
}
}
答案 2 :(得分:0)
请将operation ==
更改为operation.equals("your value")
答案 3 :(得分:0)
您的代码至少存在三个主要问题......
首先,使用String
而不是.equals
==
比较
...其次
if (operation == "+");
最后有一个分号,这基本上意味着即使满足条件,它也不会运行任何东西,但会跳到下一个执行块,这是......
{
System.out.println((num1 + num2));
}
第三,你在这里有一个额外的开放式支撑({
)......
if (operation == "-"){
{
下面...
if (operation == "/"){
{
在这里......
if (operation == "*"){
{
这将完全搞砸你的逻辑
您还应该使用else-if
块...
相反,尝试类似......
if ("+".equals(operation))//;
{
System.out.println((num1 + num2));
}
else if ("-".equals(operation)) //{
{
System.out.println((num1 - num2));
}
else if ("/".equals(operation)) //{
{
System.out.println((num1 / num2));
}
else if ("*".equals(operation)) //{
{
System.out.println((num1 * num2));
}
我已经注释了问题区域,因此您可以在手边看到它们存在的位置