我想添加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”
答案 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
设置为结果布尔值(true
或false
)。因此,为什么要成为布尔值。
要从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;
}