基本Java计算器:仅添加工作

时间:2013-10-10 07:05:19

标签: java math calculator operations

我正在尝试构建一个简单的计算器,该计算器对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));

    }

    }

    }       

4 个答案:

答案 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

进行Java ==比较

...其次

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

我已经注释了问题区域,因此您可以在手边看到它们存在的位置