制作一个简单的计算器:无法退出循环或给出答案

2023-12-28

我需要制作一个简单的计算器。我在输入任意数量的运算符和操作数,然后在输入等于按钮时输出答案时遇到问题。

到目前为止,如果我只按一个数字和一个数字,它就会退出,但不会给我答案。如果我执行多个运算符和操作数,那么=它不会退出循环。 例如它应该是这样的:

5
+
5
+
5
=
15 

这是我的代码,计算器:

public interface Calculator {
    public void setOperator(char operator);         // eg +-*/=
    public void setOperand (double operand);        // eg 123.456
    public double getResult();
}

简单计算器:

import java.io.*;

public class SimpleCalculator implements Calculator {
    char operator;
    double operand;
    double result;
    double answer;

    public void setOperator(char operator){
        this.operator = operator;
    }

    public char getOperator(){
        return operator;
    }

    public void setOperand(double operand){
        this.operand = operand;
    }
    public double getOperand(){
        return operand;
    }

    public double getResult(){
        if (getOperator() == '+'){
            result = (getOperand() + getOperand());
        }
        if (getOperator() == '-'){
            result = (getOperand() - getOperand());
        }
        if (getOperator() == '*'){
            result = (getOperand() * getOperand());
        }
        if (getOperator() == '/')
        {
            result = (getOperand() / getOperand());
        }
        if (getOperator() == '=')
            result =  answer;
    }

    return result;
}

public boolean getanswer(String value)
{
    boolean isnum = false;
    try {
        setOperand(Double.parseDouble(value));
        operand = (Double.parseDouble(value));
        getResult();
        isnum =  true;

    }
    catch(Exception e)
    {
        try {
            setOperator(value.charAt(0));
            operator = (value.charAt(0));
            isnum = false;
        }
        catch(Exception e2)
        {

            {
                System.out.println("Enter a number");
            }
        }
        return isnum;
    }
}

简单测试:

import java.io.*;

public class SimpleTest{
    static String value;
    static double operand;
    static char operator;
    static  boolean isnum;

    public static void main(String[] argv){
        SimpleCalculator calculator = new SimpleCalculator();
        value = UserInput.readString();
        while (!(value.equals("=")))
        {
            isnum = calculator.getanswer(value);
            if (!(isnum == true))
            {
                break;
            }
        }
        System.out.println(calculator.getResult());
    }

}

根据您问题的标题,我发现您的主循环可能存在问题:

value = UserInput.readString();
while (!(value.equals("="))) {
    isnum = calculator.getanswer(value);
    if (!(isnum == true)) {
        break;
    }
}

由于您在循环之外读取用户输入,因此它永远不会改变,并且只会运行一次(如果 isnum 为 false)或无限运行(如果 isnum 为 true)—— getanswer 对其结果没有记忆。因此,如果您输入一个数字,它将永远循环,但不会做任何有用的事情。

请注意:这只是初步猜测。我没有检查你的程序的其余部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

制作一个简单的计算器:无法退出循环或给出答案 的相关文章

  • 如何使用 Apache POI API 将图像添加到 pptx 中添加的图像占位符?

    我已经预定义了带有文本和图像占位符的 pptx 模板 我如何从模板访问和修改这些占位符 我可以使用 POI pptx API 直接将图像和文本添加到幻灯片中 但如何将其添加到模板的占位符中 请参阅链接以了解如何添加占位符来创建固定模板 ht
  • Hibernate注解放置问题

    我有一个我认为很简单的问题 我见过两种方式的例子 问题是 为什么我不能将注释放在字段上 让我举一个例子 Entity Table name widget public class Widget private Integer id Id G
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • SAML 服务提供商 Spring Security

    当使用预先配置的服务提供者元数据时 在 Spring Security 中 是否应该有 2 个用于扩展元数据委托的 bean 定义 一份用于 IDP 元数据 一份用于 SP 元数据
  • OSGi:如果不取消服务会发生什么

    这是我获取 OSGi 服务的方式 ServiceReference reference bundleContext getServiceReference Foo class getName Foo foo Foo bundleContex
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • hashcode 的默认实现为以相同方式构造的对象返回不同的值

    我在这里编写一个示例代码 public class Test private int i private int j public Test TODO Auto generated constructor stub public Test
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐