如何在同一行上添加两个数字?

时间:2018-11-13 12:28:35

标签: android kotlin calculator

我想添加editText的第一个和第二个值。例如:如果用户输入15,则将1加到5。我已经尝试了以下代码:

    val input = editText.text
    if (input.length == 2) { 
        val firstValue = input.length == 1 
        val secondValue = input.length == 2 
        val result = firstValue + secondValue
        textView.text = result
    }

但是我得到以下结果:“ [Ljava.lang.Boolean; @ 312b186”

6 个答案:

答案 0 :(得分:1)

    val firstValue = input.length == 1 
    val secondValue = input.length == 2 

这两个块实际上都是布尔值。 firstValue是“输入长度等于1”的布尔结果,对于secondValue同样。这意味着firstValue + secondValue实际上类似于

val result = true + false

我猜这不是由于Java 9 val关键字而在编译时被视为错误。但是结果实际上是一个布尔值。

答案 1 :(得分:1)

首先,这是此question的副本的“一半”。但这不止于此。

这里的问题是val隐藏了实际类型,然后出错了。

[Ljava.lang.Boolean;@312b186"表示您要在 Boolean 对象数组上调用toString()

换句话说:不是将字符串对象放在一起,而是创建了一个布尔数组(具有两个值),然后得到thatArray.toString()作为结果。

因此,第一步:不要在各处使用val,而要使用不同的类型。

您似乎希望传入字符串是数字。如果是这样,您应该按照其他答案的建议去做,并在输入字符串上使用toInt()

答案 2 :(得分:1)

问题是val firstValue = input.length == 1返回一个布尔值。原始的if测试就可以看出这一点。

要获取头寸价值,首先您需要执行以下操作:

val firstValue = input.get(0);

但是,我希望它返回一个String。因此,您需要将String转换为整数。

val firstValue = input.get(0).toInt(10);

然后,您应该能够添加值(需要对secondValue进行修改)。

注意:根据get()的具体情况,可能有必要执行.subSequence(0, 1).subsequence(1, 2)而不是.toInt()。我目前没有运行Kotlin环境进行确认。

答案 3 :(得分:1)

在您的示例中,您错误地从EditText检索值:

val firstValue = input.length == 1

此操作将检查input.length的长度是否为1,并将firstValue设置为结果布尔值(truefalse)。因此,为什么要成为布尔值。

要从EditText检索文本,您必须执行以下操作:

val inputString = input.getText().toString()

这将以字符串形式从EditText检索文本。

接下来,我们使用子字符串检索单个字符,然后将其解析为整数。

val firstValue = inputString.substring(0,1).toInt()
val secondValue = inputString.subString(1,2).toInt()

我们现在可以将整数加在一起以获得结果:

val result = firstValue + secondValue

答案 4 :(得分:1)

firstValue和secondValue被分配为布尔值,而不是Ints。快速修复如下。

val input = editText.text.toString()
if (input.length == 2) { 
    val firstValue = input[0]
    val secondValue = input[1]
    val result = firstValue.toInt() + secondValue.toInt()
    textView.text = "$result"
}`

答案 5 :(得分:0)

使用模运算提取数字的余数,并将余数添加到结果变量中。这是代码...

    int remainder, result = 0;
    String value= editText.getText().toString();
    int i=Integer.parseInt(value);
    int temp=i;
    while(temp != 0){
        remainder=temp % 10;
        result += remainder;
        temp=temp/10;
    }