Android数学很容易

时间:2014-08-26 21:04:39

标签: java math

我想做一些非常轻松的事情

1 + 2 = 3

String var1 = "1";
String var2 = "2";
String var3 = var1 + var2;

问题:var3是12

3 个答案:

答案 0 :(得分:1)

String var1 = "1";
String var2 = "2";
String var3 = String.valueOf(Integer.parseInt(var1) + Integer.parseInt(var2));

答案 1 :(得分:1)

您必须知道var1var2字符串,因此您必须将它们转换为数字类型,如int,以便您可以将它们添加到一起,因为当您添加到String时在一起你执行连接。

第一种方法是使用返回Integer.valueOf(String)

new Integer()

第二种方法是使用返回基元Integer.parseInt(String)

int

代码:

    String var1 = "1";
    String var2 = "2";
    int var3 = Integer.parseInt(var1) + Integer.parseInt(var2);
    System.out.println(var3);

使用eval函数的额外信息:

  public static void main(String[] args) throws ScriptException {
    String var1 = "1";
    String var2 = "2";

    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("js");        
    Object result = engine.eval(var1.concat("+").concat(var2));
    System.out.println(result.toString());
}

额外部分来源:Is there an eval() function in Java?

结果:

 3 

答案 2 :(得分:1)

之前的答案已经通过提供(在我看来次优的)代码来解决问题,但我希望提供更好的解释方法。

你想得到两个数字的总和(两位小数(1和2))。

String var1 = "1";
String var2 = "2";
String var3 = var1 + var2;

var3的值:12

这一行

String var3 = var1 + var2;

将编译为

String var3 = new StringBuilder(var1).append(var2).toString();

现在可能更加看好这段代码在做什么,它是连接添加包含的数字)两个String s(“1”和“2”),产生结果“12”。 String不是一个数字(它可以是“String - 格式”,而不是一个现成的数字),不应该这样对待。

一个简单的解决方案是使用原始数据类型int(整数,4个字节长)。

这样的事情:

int var1 = 1;
int var2 = 2;
int var3 = var1 + var2;

var3的值:3

在您的情况下,您正在创建一个计算器,并且,为了扩展我之前的观点,即使在那里您也应该避免使用String来存储计算参数和结果,原因有多种:

  • 每次使用时,您都必须将数字转换为字符串和字符串。

  • 速度较慢。使用原始类型总是比使用它的包装类更快(例如:Integer用于初始int)或任何其他类。

  • 很难阅读和维护。如果从键盘获取输入,则可能必须将给定输入解析为可以使用的基元。你可以在一开始就做到这一点,它会让你的生活更轻松。

此外,var1var2var3是可怕的参数名称。在您的情况下,firstNumbersecondNumberresult之类的内容会更合适。您应该始终小心地命名变量,并使它们具有自我解释性。

我强烈建议您阅读基本的Java教程,如下所示:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html