Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio“从未使用变量”,但实际使用(BigInteger问题,未解决的参考)_Java_Android_Kotlin - Fatal编程技术网

Java Android Studio“从未使用变量”,但实际使用(BigInteger问题,未解决的参考)

Java Android Studio“从未使用变量”,但实际使用(BigInteger问题,未解决的参考),java,android,kotlin,Java,Android,Kotlin,大家好 我开始通过Android Studio用kotlin编写我自己的第一个应用程序,我有一个问题无法解决。写下这段代码时:bi用于每个BigInteger变量的前面 它告诉我,从来没有使用过双组合。然而,我实际上在这一行中使用了它: val biresult: BigInteger = bicombinations.divide(bipcpower) 在这一行,我得到了另一个关于双组合的错误/警告,未解决的引用:双组合 编辑:第二个警告现在转到:必须初始化变量“bicombinations

大家好

我开始通过Android Studio用kotlin编写我自己的第一个应用程序,我有一个问题无法解决。写下这段代码时:bi用于每个BigInteger变量的前面

它告诉我,从来没有使用过双组合。然而,我实际上在这一行中使用了它:

val biresult: BigInteger = bicombinations.divide(bipcpower)
在这一行,我得到了另一个关于双组合的错误/警告,未解决的引用:双组合

编辑:第二个警告现在转到:必须初始化变量“bicombinations”。我知道在使用Int、Double或其他什么时如何解决这个问题,但是由于bigInteger是vals,所以我不能在if语句之外的双组合上设置值

编辑2:初始化问题就是这样解决的:首先,在if分支之外声明双组合,如下所示:

var bicombinations: BigInteger = ONE
在if分支内部,只需使用不带val的双组合,并且不要再次将其声明为BigInteger。谢谢@Elliot frisch


谁能告诉我该怎么办?这将真正帮助我完成我的应用程序

如下更改代码需要在if块外定义变量

val bicombinations: BigInteger

if (length == 2) {
 bicombinations = valueOf(bivariations.toLong())
       .multiply(bivariations)
}

如下更改代码需要在if块外定义变量

val bicombinations: BigInteger

if (length == 2) {
 bicombinations = valueOf(bivariations.toLong())
       .multiply(bivariations)
}

在设置变量的保证之前,该变量不在引用中的范围内,因此您可能需要在所有条件下设置该变量,然后在if条件之外使用它

将结果代码移到if分支内

如果长度==2{ val双组合:BigInteger=valueOfbivariations.toLong .多重变异 val biresult:biginger=bicombinations.dividebipcpower } 或者添加一个else分支,以确保变量双组合已设置

val双组合:BigInteger 如果长度==2{ 双组合=bivariations.toLong的值 .多重变异 }否则{ 双组合=大整数0 } val biresult:biginger=bicombinations.dividebipcpower
在设置变量的保证之前,该变量不在引用中的范围内,因此您可能需要在所有条件下设置该变量,然后在if条件之外使用它

将结果代码移到if分支内

如果长度==2{ val双组合:BigInteger=valueOfbivariations.toLong .多重变异 val biresult:biginger=bicombinations.dividebipcpower } 或者添加一个else分支,以确保变量双组合已设置

val双组合:BigInteger 如果长度==2{ 双组合=bivariations.toLong的值 .多重变异 }否则{ 双组合=大整数0 } val biresult:biginger=bicombinations.dividebipcpower 这样可以初始化biresult。 当您在if语句中定义变量时,您无法使用它,并且会出现未解决的引用错误。您应该在函数中定义它,以避免出现此错误

这样可以初始化biresult。

当您在if语句中定义变量时,您无法使用它,并且会出现未解决的引用错误。您应该在函数中定义它,以避免出现此错误。

只有当条件为真时才创建变量,因此可能存在一个选项,其中不设置变量,因此引发未解析引用错误。您将范围限制在块中。@Animesh请看我对其他注释的答复。问题的一半已经解决了,@elliot,这是什么意思?如果x{val z=foo;}-z存在于哪里?在块{}的范围内。在{}之外没有z。在{}里面有一个z。这就是所谓的作用域。只有当条件为true时才创建变量,因此可能有一个选项没有设置该变量,从而引发未解析引用的错误。您正在将作用域限制在块中。@Animesh请查看我对其他注释的答复。问题的一半已经解决了,@elliot,这是什么意思?如果x{val z=foo;}-z存在于哪里?在块{}的范围内。在{}之外没有z。在{}里面有一个z。这就是所谓的作用域。正如在另一条评论中所说的:由于你的想法,从未使用过的值现在已经不存在了,必须初始化的值仍然存在。然后将其初始化为类似于零的值这是行不通的,由于BigInteger始终是VAL,因此无法按照其他注释中的说明重新分配:由于您的想法,该值从未使用过,现在已消失,因此必须初始化的值仍然存在。然后将其初始化为类似于零的值这将不起作用,由于大整数总是VAL,因此无法重新分配,正如其他注释中所述:由于您的想法,从未使用的值现在已不存在,必须初始化的分支仍然存在。如果您添加一个适当的else分支,如我的回答中所述,必须初始化,不是吗?是的,它确实存在,第二个警告被改变了,但并没有完全消失。我编辑了我的原稿
发帖。@KenzoVolgmann你想做什么?具体来说,else branch的实现是什么?我需要else branch,因为根据输入的长度,我有不同的输出,因此对于每个输入长度,我需要不同的工作,如果Branches如其他注释中所述:由于您的想法,值从未使用过,“必须初始化”仍然存在。如果您添加了一个正确的else分支(如我的回答中所述),则“必须初始化”应该已消失,不是吗?是的,它已消失,但第二个警告已更改,而不是完全消失。我在我原来的帖子中编辑过。@KenzoVolgmann你想做什么?具体来说,else分支的实现是什么?我需要else分支,因为根据输入的长度,我有不同的输出,所以对于每个输入长度,我需要不同的工作if分支
val biresult=0.toBigInteger()