2

我正在尝试构建一个对 Double 值进行运算并执行的简单计算器:

+

-

*

/

否定

^2

出于某种原因,我在运行程序时指定的任何操作都会执行加法功能。所以当我尝试做

5 7 *

我得到 12.0 而不是 35。

有什么建议么?

当输入“exit”这个词时,我也非常想要一些帮助来实现退出这个程序的方法。我在想类似 System.exit(0);

但我不确定如何实施。到目前为止,这是我的代码:

import java.util.Scanner;

公共类计算{

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

4 回答 4

5

所以有一个分号 if (operation.equals("+"));System.out.println((num1 + num2));总是有效的

并且替换,==as.equals("+") 检查==引用,而 equals 检查变量的值。

于 2013-10-10T07:11:56.113 回答
0

您的代码至少存在三个主要问题......

首先,StringJava 中的比较是使用.equalsnot==

第二...

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

我已经注释掉了问题区域,以便您可以事先查看它们存在的位置

于 2013-10-10T07:32:45.213 回答
0

尝试这种方式而不是使用==use.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));

    }

    }

    }       
于 2013-10-10T07:09:12.180 回答
0

请更改operation ==operation.equals("your value")

于 2013-10-10T07:10:28.303 回答