【问题标题】:Converting a variable's data type转换变量的数据类型
【发布时间】:2014-06-14 08:20:19
【问题描述】:

我正在用 java 制作一个计算器,类似于我们计算机上的计算器。我一直在尝试复制这种情况。

电脑计算器:

5 / 2 = 2.5 * 2 = 5

所以基本上..

int/int = double * int = int 

它是如何工作的?大声笑,我能做的最接近的事情是:

int num_1 = 5;
int num_2 = 2;
double ans = (double) num_1/num_2;

double num_1 = ans;
int num_2 = 2;
int ans = num_1*num_2;

但我无法重新声明变量名,所以我该如何编程...哈哈

如果这有帮助,我的程序中有 3 个变量:

int currentValue // value displayed when number key is pressed *** eg: 2, 3, etc
int runningValue // value of running total *** eg: 2 + 2 + (right now a runningValue of 4 is shown on the computer calculator)
int finalValue // value given when the equal sign is pressed 5 + 5 = 10

帮助?

【问题讨论】:

  • 如果您的问题是关于 Java 的,请不要添加 C 或 C++ 标签。
  • 为什么要再次声明变量,您只需将值分配给该变量即可。

标签: java calculator type-conversion


【解决方案1】:

由于计算器无论如何都使用浮点数,因此最简单的方法是使用 double 来计算所有内容。

如果你想要任意精度并且你在Java,你可以使用BigDecimal

【讨论】:

    【解决方案2】:

    不要转换数据类型。请参阅 luser droog 的答案。使用那里建议的一些算法。然后继续获取用户输入并继续评估(比如进入双中间结果变量)。最后,只需根据小数点后是否有任何数字,以巧妙的方式格式化该双中间结果变量(现在是最终结果)的值。

    另见:

    DecimalFormat

    【讨论】:

      【解决方案3】:

      如果您想评估来自用户输入的代数表达式,我非常建议您研究The Shunting-Yard AlgorithmStack 抽象数据类型。您的表达式不会直接转换为 C 或 Java 语法,而是作为字符串或文本流输入。然后使用堆栈和算法,您将评估表达式而无需为所有内容创建“变量”。在顶层,您需要的唯一变量是两个堆栈和输入表达式。

      而且,正如 merlin2011 所说,您可能可以跳过所有类型分析。对于这种类型的应用程序来说,这太过分了。只需为所有中间体和结果使用一致的类型。

      要获得灵感,请查看this question 的答案。此外,这里的an evaluator in Java that 使用递归将中间结果保存在调用堆栈上,而不是分配堆栈数据类型。 (忽略我对这个问题的回答,它与其他问题完全不同。)

      【讨论】:

        猜你喜欢
        • 2022-01-23
        • 2020-06-19
        • 2012-06-20
        • 2011-07-03
        • 1970-01-01
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多