基本的帝国转换问题

时间:2010-01-24 18:46:33

标签: java android math

为我的android编码计算工具。在输入上是英尺和英寸的距离。

我有两个分别为英尺和英寸的输入(input3和input4)。在我的计算中,我试图将这两个输入转换为十进制数,以便在等式的其余部分中使用。这是我的代码中执行此操作的部分:

private void doCalculation() { 
    // Get entered input value 
    String strValue3 = input3.getText().toString(); 
    String strValue4 = input4.getText().toString();

    // Perform a hard-coded calculation 
    double imperial1 = (Integer.parseInt(strValue3) + (Integer.parseInt(strValue4) / 12));

    // Update the UI with the result to test if calc worked 
    output2.setText("Test: "+ imperial1); 
}

我的测试值是4英尺6英寸。 4这个很好,但是当它除以12时,6英寸默认为0.所以我的结果是4.0我尝试将计算减少到JUST分割操作,结果是0.0

我做错了什么? (fyi:这是我第一次使用Java)

3 个答案:

答案 0 :(得分:8)

你的类型错了。当你真的应该加倍时,你将它们解析为整数。

尝试:

double imperial1 = Double.parseDouble(strValue3) + 
    (Double.parseDouble(strValue4) / 12.0);

答案 1 :(得分:1)

...... Eli说的话。

我只是想问为什么你的变量被称为strValue3和strValue4。我猜它是由它产生的,但是你应该养成将事物命名的习惯。我可能会选择“英尺”和“英寸”:)

答案 2 :(得分:1)

<\ n> Eli的回答会很好。我刚刚在Eli的回答中发布了你的问题(评论)的答案。

Can you explain what a try-catch block is?

首先,您必须了解异常是什么。例外是在程序执行期间发生的事件,它会破坏程序指令的正常流程。

Java中有3种例外:

  • 运行时异常:如果异常的数据类型为java.lang.RuntimeException或其子类,则异常称为运行时异常。

  • 已检查的例外:如果异常的数据类型是java.lang.Exception的子类,而不是{{1}的子类,则异常称为已检查的异常}。

  • 错误:如果异常的数据类型是RuntimeException的子类,则异常称为错误。错误与应用程序之外出现的问题相关联,通常不会尝试从错误中恢复。

有关例外的更详细说明,请阅读this

为了捕获和处理这些异常,您可以使用try-catch块。例如,您使用java.lang.Error函数。如果此函数中的参数不是有效数字,例如,如果用户提供字符串“ Notanumber ”,您尝试将其转换为double,那么Double.parseDouble将被NumberFormatException抛出{1}}。如果您不处理此错误,您的程序将意外终止。

所以,你应该写下面的内容(包括你想要的正数字):

Double.parseDouble